我的 Mac 上的 ssh-agent 导致某些主机弹出:
[me@my-laptop]$ ssh cargo2
Last login: Tue Aug 3 09:26:43 2010 from trainwreck.arlut.utexas.edu
[me@cargo2]$
Run Code Online (Sandbox Code Playgroud)
但对于其他主机:
[me@my-laptop]$ ssh red
Run Code Online (Sandbox Code Playgroud)
然后我得到了可怕的“请输入您的 SSH 密钥 'id_rsa' 的密码。” 弹出。我知道 ssh-agent 正在运行和工作,因为它适用于第一台主机。
如何停止所有主机的弹出窗口并使其始终使用 ssh-agent?
以供参考:
$ ssh-add -l
2048 <hex value> /Users/me/.ssh/id_rsa (RSA)
$ ps aux | grep ssh-agent
me 1393 0.0 0.0 2445984 1572 ?? Ss 9:18AM 0:00.10 ssh-agent -s
$ env | grep -i ssh
SSH_AGENT_PID=1393
SSH_AUTH_SOCK=/tmp/ssh-UW4rDdw1jw/agent.1391
Run Code Online (Sandbox Code Playgroud) 我正在使用 tmux 和 zsh,最近我在学习 ssh-agent 和 keychain。从 zsh 的手册页中可以看出,.zlogin只有当 shell 是登录 shell 时,它才会获取源代码。
按照我读到的建议,我坚持keychain --clear了我的.zlogin,效果非常好。当我登录盒子时,我必须解锁我的钥匙。然而,每次我在 tmux 中创建一个新窗口时,它都会清除/让我重新添加我的密钥。这有点烦人......但如果事实上每个新的 tmux 窗口都是一个登录窗口,我可以理解。
除了有关该主题的联机帮助页之外,我无法找到太多帮助。那么每个新的 tmux 窗口都是一个登录 shell,还是有什么方法可以让它仅在创建 tmux 窗口时才清除我的密钥?
我有三个 SSH 密钥对,可以通过以下方式找到ssh-add -L;远程服务器接受两个密钥,但只有一个密钥可用于 GitHub,我想通过代理转发克隆一个 GitHub 存储库(托管限制阻止部署密钥工作)。
id_rsa通过 列出的第一个密钥 [ ] ssh-add -L,忽略我的-i命令,因此代理转发仅在删除密钥后才有效id_rsa:
ssh -A -tt -i ~/.ssh/id_rsa_github user@ip 'ssh -T git@github.com'
Run Code Online (Sandbox Code Playgroud)
IdentityFileand IdentitiesOnlyto ~/.ssh/config,但也不成功这是正常行为吗?如何强制 SSH 使用特定密钥?
我试图找到一种方法来从我的 Mac 的 ssh-agent 中删除单个 ssh 身份,ssh-add 手册页指出 -d 选项确实如此
不是添加身份,而是从代理中删除身份。 如果 ssh-add 不带参数运行,则默认身份的密钥将被删除。 否则,参数列表将被解释为公钥文件的路径列表,并且匹配的密钥将从代理中删除。 如果在给定路径中找不到公钥,ssh-add 将附加 .pub 并重试。
由于我有多个密钥,我不能将它们全部称为 id_dsa 并且我不能将它们作为参数传递,因为我不想删除身份而不是公钥。
那么有人知道另一种在 Mac 上从 ssh-agent 中删除的方法吗?
我正在使用 gpg-agent 来管理我的 github ssh 密钥。我通过 openpgpg2ssh 从我的私人 gpg 密钥生成我的(私人)ssh 密钥。不幸的是,虽然我的私人 gpg 密钥没有密码保护,但在我 ssh/git 到 github 之前,gpg-agent 会要求我输入密码(通过一个漂亮的 X 对话框)。不输入任何内容就可以正常连接到 github。
~$ eval "$(gpg-agent --enable-ssh-support --daemon)"
~$ gpg2 --export-secret-keys | openpgp2ssh | ssh-add /dev/stdin
Identity added: /dev/stdin (/dev/stdin)
~$ ssh git@github.com
PTY allocation request failed on channel 0
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.
Run Code Online (Sandbox Code Playgroud)
有什么办法可以禁用这个不必要的对话框吗?除此之外,为什么我会收到“通道 0 上的 PTY 分配请求失败”消息?
我正在运行 GNU/Linux;Debian 6;x86_64
所以我在我的 MacBook 上本地存储了一些服务器的密钥,但是我在虚拟机中工作了相当长的时间,所以我使用 .SSH 连接到虚拟机ssh -A。这允许我从 VM 内部通过 SSH 连接到服务器。
我最近开始使用 tmux 来更好地管理我的终端窗口,但我发现了一个奇怪的问题。虽然我在 tmux 中打开的初始窗口可以使用 SSH,但任何其他打开的窗口都不能。 ssh-add显示从这个 tmux 窗口内部无法打开到我的 SSH 代理的连接。任何想法如何使 tmux 与 SSH 代理转发很好地发挥作用?
背景故事——我已经在这台计算机 (Windows XP) 上使用 Git 大约 8 个月没有问题。突然,上周,当我启动 Git 时,它不再询问我的用户名和密码。
每次我尝试触摸远程分支时它都会询问,并且考虑到我有密码而不是密码,这真的很烦人。
我在我的.profile文件中使用来自 GitHub 的代码:
SSH_ENV="$HOME/.ssh/environment"
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
echo succeeded
chmod 600 "$SSH_ENV"
. "$SSH_ENV" > /dev/null
ssh-add
}
# test for identities
function test_identities {
# test whether standard identities have been added to the agent already
ssh-add -l | grep "The agent has no identities" > /dev/null
if …Run Code Online (Sandbox Code Playgroud) 我目前面临一个有关ssh-agent服务的小问题。我今天在删除 Boot Camp 分区后重新启动了计算机。从那时起,ssh-agent 不再在登录时自动启动。
我经常将这个代理与 Git 和多个 SSH 密钥一起使用,以前从未见过这样的问题。我在“控制台”应用程序中找不到有关 ssh-agent 的任何错误。
如何查看服务配置?我该怎么做才能让它再次工作?
我正在尝试在 WSL 下使用 ssh-agent 但脚本运行后 SSH 参数被擦除
来自 .bashrc(精简版)
eval $(ssh-agent)
ssh-add
ssh-add -l
echo "SSH_AGENT_PID is" $SSH_AGENT_PID
echo "SSH_AUTH_SOCK is" $SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)
提示输入密码然后显示指纹和相关变量
在提示符(或单独的脚本)运行之后直接
ssh-add -l
echo "SSH_AGENT_PID is" $SSH_AGENT_PID
echo "SSH_AUTH_SOCK is" $SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)
给
Could not open a connection to your authentication agent.
SSH_AGENT_PID is
SSH_AUTH_SOCK is
Run Code Online (Sandbox Code Playgroud)
(整理可读性)
代理仍在使用原始 pid 运行(在顶部检查)也尝试eval $(ssh-agent ) > /dev/null并eval $(ssh-agent -s)结合使用
为什么这些会被抹掉?ssh-agent 工作正常,直到 Windows 更新 1709“秋季创作者更新”
信息:linux 版本 4.4.0-43-Microsoft (Microsoft@Microsoft.com)(gcc 版本 5.4.0 (GCC))#1-Microsoft Wed Dec 31 14:42:53 PST 2014
连接到同一主机时,我需要使用两个不同的 ssh 密钥。
我需要用来连接的机器(因为IP地址限制)不是存储ssh密钥的机器,所以我在这里使用ssh-agent。此外,这些 ssh 连接是在中间计算机上运行的脚本的控制下发生的。
如果 ssh 密钥位于该计算机的本地,我想我可以使用 ssh -i (或者可能是嵌套代理中的 ssh-add )来指定我想要使用的身份,并且我可以将脚本和/或脚本上下文更新为为我的案例做正确的事情(可能使用配置文件来指定相关详细信息)。
但是,由于密钥不在执行 ssh 连接的计算机上,因此 ssh -i 失败(该计算机上不存在私钥文件)。同样,ssh-add 希望我通过提供私钥的文件名来指定密钥。(或者我怀疑情况确实如此 - 我实际上还没有弄清楚如何嵌套 ssh-agents,但 ssh-add 上的文档怀疑这是否是一种可行的方法。)
所以我的问题是:如何让 ssh 在与目标系统联系时仅使用我指定的密钥?
[当然,其他人也需要使用这些脚本,但这是我自己使用后可以解决的问题。]
换句话说,我有这样的情况:
$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)
Run Code Online (Sandbox Code Playgroud)
在一种情况下,我需要 ssh 来使用 key2_rsa,而在另一种情况下,我需要 ssh 来使用 key3_rsa
此处使用错误的密钥会导致与目标系统的连接失败(因为它将另一个密钥识别为有权访问计算机,但无权访问该子系统)。
我该如何进行这项工作?
ssh-agent ×10
ssh ×7
linux ×2
tmux ×2
boot ×1
git ×1
gnu-screen ×1
gnupg ×1
mac ×1
macos ×1
ssh-keys ×1
ubuntu ×1
windows ×1
windows-10 ×1
windows-subsystem-for-linux ×1
windows-xp ×1
zsh ×1