我正在使用 ubuntu 12.04。我每天都使用 ssh 连接到许多服务器,所以我将它们的参数放在.ssh/config文件中;像这样 :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
Run Code Online (Sandbox Code Playgroud)
我知道我们应该使用密钥对来确保安全,但是有时我们无法将公钥添加到远程机器中(例如,接受密码并执行特定命令的公共 SSH 服务器,或者没有主目录的用户)。
那么,有没有办法为每个连接将密码放在这个文件中?所以当服务器要求输入密码时,终端把它的通行证发送给服务器,这样我就不用每次都输入密码了。
Dan*_*ner 50
不,没有任何方法可以使用 openssh 内置机制以非交互式方式在命令行上指定或提供密码以进行 ssh 身份验证。至少不是我所知道的。您可以将密码硬编码到 expect 脚本中,但这也不是一个好的解决方案。
正如迈克尔所说,您肯定希望使用密钥对进行无密码身份验证,最终私钥几乎是文件中的一个大密码。
Dar*_*eep 32
为了避免一连串的评论:是的,这是不安全的(甚至可以说是不安全的)。我强烈建议您仅在隔离网络上的实验室情况或不涉及生产服务器或潜在生产服务器的类似情况下执行此操作,而无需完全重置/格式化。
我想设置它,因为我认为我的 2950 交换机不支持私钥/公钥,我希望在某个时候获得这些知识,但我还没有。
使用别名和 sshpass 可以实现这一点。
我的示例别名是:
alias ssc='sshpass -pcisco ssh'
Run Code Online (Sandbox Code Playgroud)
其中“cisco”是密码。注意 -p 和密码之间没有空格。
用法是(参考问题):
ssc server1
Run Code Online (Sandbox Code Playgroud)
注意:这仅针对使用搜索引擎的人回答了标题中的问题。如果您使用的是问题示例之类的服务器,则应使用私钥/公钥对而不是此答案
小智 27
是的,如上所述,无法简单地保存密码。我建议使用 ssh 密钥进行授权。
首先,生成您的密钥:
ssh-keygen
Run Code Online (Sandbox Code Playgroud)
然后在您的服务器/桌面上复制密钥:
ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:
Run Code Online (Sandbox Code Playgroud)
就这样。再也不会要求您输入密码。
我还建议在一般情况下删除密码授权,但这取决于您。
小智 8
我从~/.local/bin目录中使用这个脚本
#!/usr/bin/bash
ORIG_SSH=/usr/bin/ssh
HOST=$1
SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
export SSHPASS
sshpass -e $ORIG_SSH $@
else
$ORIG_SSH $@
fi
Run Code Online (Sandbox Code Playgroud)
这允许我#PS <password>在.ssh/config文件中指定密码。
但是,正如大家说,这是更好地利用ssh-keys与ssh-agent当它是可能的
| 归档时间: |
|
| 查看次数: |
181548 次 |
| 最近记录: |