问题描述
每当我需要ssh到网络服务器时,我需要运行ssh-add <key>
。有没有办法永久添加ID,所以我不必在每次登录时不断添加身份?
编辑:密钥是一个pem文件,我从云服务下载。
最佳解决方案
像往常一样生成密钥:ssh-keygen
,然后使用ssh-copy-id
将该密钥放入远程服务器,ssh-copy-id
将其同步到远程服务器接受的密钥。
ssh-keygen
ssh-copy-id user@host
它将提示您输入密码,然后执行将.pub
密钥与远程SSH服务器链接所需的所有步骤。
默认情况下,它会将所有.pub密钥复制到远程服务器。如果您刚刚使用ssh-keygen
创建了密钥,那么这不是问题(因为您只有一个!)。但是,如果您有多个键,则只能使用-i
标志复制特定键。
ssh-copy-id -i ~.ssh/key_name.pub user@host
用密钥名称替换key_name.pub
。
次佳解决方案
您可以使用以下命令生成ssh密钥:
ssh-keygen
然后,您可以将密钥复制到服务器:
ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys"
现在您可以自动登录您的网络服务器
第三种解决方案
如果您的密钥是password-less并且被命名为ssh在识别时将尝试查找的文件之一(~/.ssh/id_dsa
或~/.ssh/id_rsa
),则不必将其添加到您的代理。
但。如果这些文件被盗的可能性最小,您可能只允许任何人访问您使用此身份的服务器。简而言之,pwned。
恕我直言,password-less私钥是一种不好的做法,只应在~/.ssh/authorized_keys
非常严格的环境中使用。
第四种方案
把它放在你的~/.bashrc
中
eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is
第五种方案
编写一个简短的shell脚本,它将运行ssh-add,然后连接如下:
ssh-add ~/.ssh/your-key
ssh user@remotehost
然后,您可以使用一个命令ssh到您的主机。