ssh远程执行命令

要通过SSH远程执行命令,您可以使用以下几种方法:

方法1:基本的SSH命令

使用基本的SSH命令格式,您可以在远程服务器上执行单个命令或多个命令。例如:

ssh -p $port $user@$ip 'cmd1 ; cmd2'

其中:

  • $port 是SSH连接的端口号。

  • $user 是远程服务器的用户名。

  • $ip 是远程服务器的IP地址。

  • cmd1 ; cmd2 是要在远程服务器上执行的命令,多个命令之间用分号隔开。

方法2:使用SSH隧道

如果您需要执行需要交互的命令,可以使用SSH隧道。例如:

ssh -t $user@$ip 'sudo ls /root'

方法3:使用Paramiko库

Paramiko是一个Python库,可以用于通过SSH连接并执行命令。以下是一个使用Paramiko的示例代码:

import paramiko

# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器
ssh.connect(hostname='192.168.1.100', port=22, username='root', password='mysecretpwd')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls /')

# 获取命令结果
result = stdout.read().decode()
print(result)

# 关闭连接
ssh.close()

方法4:使用SSH密钥认证

为了提高安全性,建议使用SSH密钥认证而不是用户名/密码认证。以下是一个使用密钥认证的示例:

ssh -i ~/.ssh/id_rsa user@remote_host 'ls /'

其中:

  • ~/.ssh/id_rsa 是您的私钥文件路径。

  • user 是远程服务器的用户名。

  • remote_host 是远程服务器的IP地址。

注意事项

  1. 安全性 :使用密钥认证比用户名/密码认证更安全。

  2. 脚本执行 :如果需要执行脚本,请确保脚本在远程服务器上的路径是正确的,并且脚本具有执行权限。

  3. 交互式命令 :对于需要交互的命令,如需要输入密码的命令,建议使用SSH隧道或其他方法来避免在命令行中直接输入密码。

通过以上方法,您可以根据需要选择合适的方式来远程执行命令。

Top