gpt4 book ai didi

python - 如何使用 Paramiko 通过中间主机 SSH 连接到机器?

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:11 25 4
gpt4 key购买 nike

本质上,我需要访问一台计算机,比如机器 A,它只能通过我公司的内部网络访问。我曾经能够设置 tcprelay 端口转发来完成此操作,但由于某些潜在的安全漏洞,该管道已被禁用。

假设我公司的通用网络位于公司@10.0.0.1我想使用的具体机器是机器@10.0.0.3

两个账号都有密码‘password’

通过终端和 shell 命令,我可以使用一个命令跳到那里: https://askubuntu.com/a/311457

或者,在步骤中,它将是:

[on my account] ssh company@10.0.0.1
[on my account] enter password
[on company network] ssh machine @10.0.0.3
[on company network] enter password again

我会登录到我需要与之通信的机器。

但是,经过一下午的努力,我无法使用 Paramiko 进行此操作。我尝试建立连接然后发出 client.exec_command() 但就是无法获得特定机器的句柄。我的其余脚本依赖于拥有一个可以接收命令并返回响应的 paramiko 客户端,因此如果我切换到结构或子进程,传播所有更改对我来说将是一个非常沉重的开销。

我最接近的是:

ssh.connect(’10.0.0.1', username=‘company', password=‘password’)
chan = ssh.get_transport().open_session()
chan.get_pty()
chan.exec_command(‘ssh machine@10.0.0.3’)
print chan.recv(1024)

它返回了“输入密码”提示,但运行 chan.send(‘password’) 只是以挂起结束。

此时我正在紧张地阅读文档,希望找到我遗漏的概念。

如果有人能提供一些建议,我将不胜感激。

谢谢!

最佳答案

另一种方法是在登录另一台机器时避免输入密码。这可以通过使用 ssh-keygen 来完成。

  1. 以用户“first”登录到第一台机器 (A):$ ssh-keygen -t rsa--> 请求时不要输入任何密码--> 记下“您的公钥已保存在/home/first/.ssh/”这一行--> 这个文件是机器'A'的公钥

  2. 现在使用 ssh 登录到第二台机器 (B)。然后检查 ~/.ssh 文件夹。如果没有文件夹,请创建一个。在 ~/.ssh/authorized_keys 下创建名为“authorized_keys”的文件

  3. 将“第一个”用户的文件内容复制到“authorized_keys”文件中。 是来自“第一个”用户登录的带有“id_rsa.pub”的文件(在/home/first/.ssh/id_rsa.pub 下)

  4. 现在您可以从第一台机器登录到第二台机器,而无需通过脚本输入密码。

关于python - 如何使用 Paramiko 通过中间主机 SSH 连接到机器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com