mml*_*mla 112 linux security login ssh ubuntu
我需要登录到我在运行 Ubuntu 的远程主机上创建的用户。我无法使用ssh
密钥,因为 ssh 登录将通过在我无法访问的服务器中运行的 bash 脚本进行(想想像 Bamboo 这样的持续集成服务器)。
我知道这不是一个理想的做法,但我想要么将远程主机设置为不要求输入密码,要么能够使用类似的方式登录ssh --passsword foobar user@host
,就像 MySQL 允许您进行登录那样。
我没有找到这个man ssh
,我对解决这个问题的任何替代方法持开放态度。
小智 184
在 Ubuntu 上,安装sshpass
软件包,然后像这样使用它:
sshpass -p 'YourPassword' ssh user@host
Run Code Online (Sandbox Code Playgroud)
sshpass
还支持从文件或环境变量传递键盘交互密码,这在任何与安全相关的情况下可能是更合适的选项。详情请参阅man sshpass
。
Cel*_*ada 20
如果你选择的是把密码到一个脚本或ssh
命令行或纯文本文件,那么你MUCH最好使用一个ssh
键来代替。无论哪种方式,任何有权访问ssh
存储客户端脚本的帐户的人都可以使用它来进入服务器,但至少在ssh
密钥的情况下,OpenSSH 正确支持它,您不会通过以下方式授予访问权限其他方式ssh
,如果有必要,它更容易被撤销,等等......
您必须解释为什么要求不使用 ssh 密钥。
还考虑使用强制命令(command="..."
在.ssh/authorized_keys
文件中),以便客户端只能访问在服务器上运行他们需要的命令而不是完整的 shell。
emo*_*ory 11
首先,像其他受访者一样,我建议只使用 ssh 密钥。但我会假设控制服务器的人根本不会允许您使用 ssh 密钥身份验证,而您必须使用密码身份验证。
您可以使用 ControlMaster 和 ControlPath。
让 A 成为您无法访问的服务器(想想像 Bamboo 这样的持续集成服务器),让 C 成为运行 Ubuntu 的远程主机。
现在让 B 成为您控制的某台计算机。如果您不能提供合适的 B 计算机,则此答案将不起作用。
ssh -M -S /tmp/controlpath C
并在提示下输入您的密码。在此之后,你应该能够从A登录到C,无密码ssh -S /tmp/controlpath C
。在 A 上的脚本中,您可以编写ssh B ssh C dostuff
.
每次重新启动 B 时,您都必须重新建立连接ssh -M -S /tmp/controlpath C
。