情况:
- 我有一个IP:192.168.1.1
$IP
- 用户名:root(或其他)
$USER
- 和密码:foo
$PASSWD
有没有办法将 $PASSWD 提供给 ssh ?喜欢
PASSWORD_VAR=$PASSWD ssh -l $USER $IP
- 用户可以看到密码,
- 用户必须“登陆”通常的交互式 shell 会话。
- 如果需要的话,可以在桌面 Linux 上安装 somme 软件包。
阅读 ssh(1) 没有给我任何线索。这样的事情存在于window的世界中(例如Kitty),现在我想在unix中做同样的事情(suse或unbuntu,如果有的话)。
我知道如何设置公钥/私钥对,但这不是主题。
答案1
如果可以安装的话是可以的sshpass,所以你可以运行:
sshpass -p 'password' ssh 192.168.1.1
答案2
ssh
默认情况下和设计上不会这样做。这是因为嵌入脚本中的明文密码从根本上来说是一个坏主意。尤其是因为 - 如果它是在单个命令行上指定的,那么它通常情况下显示在ps
每个用户都可以看到的列表中。所以故意让它变得困难,以鼓励更好的习惯。公私密钥对,ssh-agent
对于消除这一要求大有帮助。
如果你确实有需要,那么expect
可以这样做:
#!/usr/bin/expect -f
spawn /usr/bin/ssh -n username@hostname
expect "password:"
send "Password\n";
interact
(或者sshpass
正如其他评论员提到的)。