Ssh
ssh-add 無法連接到 ssh-agent
我知道那
ssh-add
是ssh-agent
.但是
ssh-agent
在我的電腦上已經執行(我可以在 中找到它top
)。當我輸入ssh-add
時,它說“無法打開與您的身份驗證代理的連接”。如何
ssh-add
與ssh-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 是一個獨立的程序,不同於上層的已啟動的互動式 shellhello.sh
,並且變數不會“向上”繼承。相反,如果您使用
source hello.sh
或獲取腳本,. hello.sh
它會在同一個 shell中執行,並且變數會被正確分配。但是,如果您正在執行多個 shell(多個終端仿真器、SSH 會話、螢幕/tmux 視窗等),您實際上只需要一個
ssh-agent
. 您必須將變數分配保存到某個文件中,然後從例如.bashrc
. 但我不知道你到底在做什麼。