Skip to main content
 首页 » 编程设计

python之主机内的 Fabric ssh 两次

2025年05月04日7freeliver54

如果 server2 只能从 server1 访问,我如何 ssh 两次?

fab文件.py:

from fabric.api import run 
from fabric.api import env 
 
env.hosts = ['host@server1.com'] 
 
env.use_ssh_config = True 
 
def dothis(): 
    run('ssh host@server2.com') 
    run('ls -al') # this should be done on host@server2.com 

当我运行时:

做得很好,我得到:

[host@server1.com] Executing task 'dothis' 
[host@server1.com] run: ssh host@server2.com 
[host@server1.com] out: Permission denied (publickey). 
[host@server1.com] out:  
[host@server1.com] out:  
 
Fatal error: run() received nonzero return code 255 while executing! 
 
Requested: ssh host@server2.com 
Executed: /bin/bash -l -c "ssh host@server2.com" 
 
Aborting. 
Disconnecting from host@server2.com... done. 

如何在服务器 2 上告诉结构 env.user_ssh_config = True 而不在服务器 1 上保留另一个结构文件?

我平时访问server2的方式是这样的:

ssh host@server1.com ssh host@server2.com 

请您参考如下方法:

看起来您正在尝试将“server1.com”用作 gateway托管到“server2.com”,可能还有其他:

from fabric.api import run 
from fabric.api import env 
 
env.gateway = 'host@server1.com' 
env.hosts = ['host@server2.com'] 
 
env.use_ssh_config = True 
 
def dothis(): 
    run('ls -al')  # this should be done on host@server2.com