要通过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地址。
注意事项
-
安全性 :使用密钥认证比用户名/密码认证更安全。
-
脚本执行 :如果需要执行脚本,请确保脚本在远程服务器上的路径是正确的,并且脚本具有执行权限。
-
交互式命令 :对于需要交互的命令,如需要输入密码的命令,建议使用SSH隧道或其他方法来避免在命令行中直接输入密码。
通过以上方法,您可以根据需要选择合适的方式来远程执行命令。