我正在尝试开始使用Paramiko库,但是当我尝试连接以下简单程序时,库就会抛出异常:
import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='boatzart', password='mypassword')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Traceback (most recent call last):
File "test.py", line 6, in <module>
ssh.connect('127.0.0.1')
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 316, in connect
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 85, in missing_host_key
paramiko.SSHException: Unknown server 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
无论我尝试哪种服务器都会发生这种情况
创建从REMOTE到PROXY的ssh连接,以将REMOTE计算机上端口22上的ssh流量转发到PROXY服务器上的端口8000.
#从REMOTE机器运行
ssh -N -R 0.0.0.0:8000:localhost:22 PROXY_USER @ PROXY_HOSTNAME
创建一个从LOCAL到PROXY的ssh隧道,并将来自LOCAL:1234的ssh流量转发到PROXY:8000(然后转发到REMOTE:22).
#从LOCAL机器运行
ssh -L 1234:localhost:8000 PROXY_USER @ PROXY_HOSTNAME
创建从LOCAL到REMOTE的转发ssh连接(通过PROXY).
#在新的终端窗口中从LOCAL机器运行
ssh -p 1234 REMOTE_USER @ localhost#我现在已经转到REMOTE框并可以运行命令
我查看了一些与使用Paramiko进行端口转发相关的问题,但它们似乎并未解决这种特定情况.
如何使用Paramiko运行上面的步骤2和3?我基本上想运行:
import paramiko
# Create the tunnel connection
tunnel_cli = paramiko.SSHClient()
tunnel_cli.connect(PROXY_HOSTNAME, PROXY_PORT, PROXY_USER)
# Create the forwarded connection and issue commands from LOCAL on the REMOTE box
fwd_cli = paramiko.SSHClient()
fwd_cli.connect('localhost', LOCAL_PORT, REMOTE_USER)
fwd_cli.exec_command('pwd')
Run Code Online (Sandbox Code Playgroud)