Ssh

ssh-add 無法連接到 ssh-agent

  • June 17, 2020

我知道那ssh-addssh-agent.

但是ssh-agent在我的電腦上已經執行(我可以在 中找到它top)。當我輸入ssh-add時,它說“無法打開與您的身份驗證代理的連接”。

如何ssh-addssh-agent細節溝通?

我的情況是

#! /bin/sh

# hello.sh

eval $(ssh-agent -s)
ssh-add

然後,

bash ./hello.sh

當我輸入

ssh-add some-new-key

在終端,

它輸出該錯誤消息

的輸出ssh-agent -s是一些環境變數分配,諸如此類SSH_AUTH_SOCK=blahblah; export SSH_AUTH_SOCK。當您執行 eval $(ssh-agent -s)時,shell 將其作為程式碼執行,並且這些變數在該 shell 中設置。那裡的變數包含ssh-add聯繫代理所需的資訊,它們從外殼繼承到ssh-add程序。

但是在這裡,您是從內部執行它hello.sh。執行腳本的 shell 是一個獨立的程序,不同於上層的已啟動的互動式 shell hello.sh,並且變數不會“向上”繼承。

相反,如果您使用source hello.sh或獲取腳本,. hello.sh它會在同一個 shell中執行,並且變數會被正確分配。

但是,如果您正在執行多個 shell(多個終端仿真器、SSH 會話、螢幕/tmux 視窗等),您實際上只需要一個ssh-agent. 您必須將變數分配保存到某個文件中,然後從例如.bashrc. 但我不知道你到底在做什麼。

引用自:https://unix.stackexchange.com/questions/593390