如何以及在哪里可以检查已将哪些密钥添加ssh-add到我的ssh-agent?
我想通过 SSH 在我的网络(静态以太网)上的多台计算机之间进行通信。为了做到这一点,我需要在每次登录特定机器时运行 ssh-add,我该怎么做才能设置一次,并且每次登录或重新启动时都不会要求我输入密码我的机器?
我知道有一种方法可以在bash_profile文件中添加一些行,但是每次重新启动/登录到特定机器时我仍然需要输入密码。
if [ -z "$SSH_AUTH_SOCK" ] ; then
eval `ssh-agent -s`
ssh-add
fi
Run Code Online (Sandbox Code Playgroud) 我一直在尝试ssh-add使用运行 Raspbian 的 RaspberryPi。
我可以开始ssh-agent,当我这样做时,会在终端中提供以下输出:
SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;
Run Code Online (Sandbox Code Playgroud)
如果我运行,ps aux | grep ssh我可以看到它正在运行。
然后我尝试运行ssh-add以添加我的密钥密码,我得到以下信息:
Could not open a connection to your authentication agent.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我通过以下方式向代理添加了 ssh 密钥:
$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)
Run Code Online (Sandbox Code Playgroud)
重新启动后,代理不再添加此密钥:
$ ssh-add -l
The agent has no identities.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我无法通过 ssh 连接到要求diffie-hellman-group1-sha1密钥交换方法的服务器:
ssh 123.123.123.123
Unable to negotiate with 123.123.123.123 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)
如何diffie-hellman-group1-sha1在 Debian 8.0 上启用密钥交换方法?
我曾尝试(如建议在这里),以
将以下行添加到我的 /etc/ssh/ssh_config
KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr
Run Code Online (Sandbox Code Playgroud)重新生成密钥
ssh-keygen -A
Run Code Online (Sandbox Code Playgroud)重新启动 ssh
service ssh restart
Run Code Online (Sandbox Code Playgroud)
但仍然得到错误。
为了运行,ssh-agent我必须使用:
eval $(ssh-agent)
Run Code Online (Sandbox Code Playgroud)
为什么需要eval输出ssh-agent? 为什么我不能运行它?
ssh-add 单独不起作用:
Error connecting to agent: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我应该如何使用该工具?
我已经使用 ssh-copy-id 设置了自动(无密码)ssh 登录到某些服务器。ssh-agent只能在运行它的终端上工作。我如何在我的ssh-add所有终端中工作?
当然,我不喜欢没有密码短语的 SSH 密钥。
我想放在ssh-add /path/to/special_key脚本的顶部。这工作正常,但它总是提示输入密码。这很奇怪,也有点烦人,因为即使ssh-add -l显示已经添加了密钥,它仍然要求输入密码。
有没有办法告诉它:“添加此密钥并询问密码是否尚未添加,否则什么都不做”?
如何将ssh-agent作为systemd服务启动?网上有一些建议,但都不完整。
如果ssh-agent服务启动成功,如何自动添加未加密的密钥?可能,从列表中添加键~/.ssh/.session-keys会很好。
之后如何SSH_AUTH_SOCK在任何登录会话中进行设置?最正确的方法是将它从ssh-agent服务推送到systemd-logind服务(不知道是否有可能)。简单天真的方法就是将它添加到/etc/profile.