1

从我的 bash 脚本执行命令时,我目前面临一个奇怪的问题。

我的脚本有这个命令,

ssh IPAddressA -l root "ssh -l root IPAddressB ls"

其中 IPAddressA 和 IPAddressB 将替换为可相互访问的两台机器的硬编码 IP 地址。

用户将在被询问时输入密码。但是,我在输入 IPAddressA 的密码后收到此错误。

root@IPAddressA's password: 
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
]$
4

2 回答 2

2

有一个更好的技巧。

在 ~/.ssh/config 中为 IPAddressA 添加一个主机条目,配置如下:

Host IPAddressA
    User someguy
    ProxyCommand ssh -q someguy@IPAddressB nc -q0 %h 22

这种方法的巧妙之处在于,您可以 scp/sftp 到 IPAddressB,而在您的 shell 命令行上没有任何奇怪的东西。

要获得奖励积分,请为自己生成一个公钥对并将公钥放在 ~/.ssh/authorized_keys 中的 IPAddressA 和 IPAddressB 上。如果您不输入密码,您甚至都不会费心输入密码。

此外,如果您尝试访问只有一个入口点的远程 LAN - SSH 实际上可以充当 VPN 客户端,通过代理主机桥接您。当然,远程端需要支持tap/tun设备(就像你的本地机器一样)......但如果它已经全部存在......超级无痛机制来桥接。

于 2012-04-11T07:47:19.250 回答
1

当提示内部 ssh 密码时,没有可用的交互式键盘。你可以通过 ssh 隧道获得你想要的东西。

ssh root@IPAddressA -L2222:IPAddressB:22 -Nf
ssh root@localhost -p2222

第一行打开一个隧道,所以你的 localhost2222端口指向IPAddressB:22andd 将 ssh 进程带入后台(-f)而不执行命令(-N
第二行IPAddressB:22通过新打开的隧道连接

于 2012-04-11T07:41:46.417 回答