質問: パスワードプロンプトなしでssh-addを自動的に実行するにはどうすればよいですか? sshを介して、ネットワーク上の複数のコンピューター(静的イーサネット)間で通信したい。これを行うには、特定のマシンにログインするたびにssh-addを実行する必要があります。これを行うには、一度セットアップして、ログインまたは再起動するたびにパスフレーズを要求しないようにします。私のマシン?bash_profileファイルにいくつかの行を追加する方法があることはわかっていますが、特定のマシンに再起動/ログインするたびにパスワードを入力する必要があります。if [ -z "$ssh_auth_sock" ] ; then eval `ssh-agent -s` ssh-add fi
回答: macosでの私のセットアップは次のとおりです(.zshrc、またはbashの場合は.bash_profileで)。# kill then load the ssh-agent and set the necessary env variables it outputs sshrestart() { # if all else fails # pkill -u $(whoami) ssh-agent; if [ -n "$ssh_auth_sock" ] ; then eval `/usr/bin/ssh-agent -k` fi eval `ssh-agent -s` ssh-add ~/.ssh/your_key_file echo "restarted ssh agent" } if [ -z "$ssh_auth_sock" ] || [[ $ssh_auth_sock == *"/private/tmp/"* ]] ; then eval `ssh-agent -s` > /dev/null 2>&1 ssh-add ~/.ssh/your_key_file > /dev/null 2>&1 fi デフォルト値は|| [[ $ssh_auth_sock == *"/private/tmp/"* ]]であるため、macosでは/private/tmp/com.apple.launchd.somethinghere/listeners部分が必要です。そうでない場合、$ssh_auth_sockは常に何かに設定されているため、@ thomas nymanの包括的な回答は失敗します。次に.zlogout(bashの場合は.bash_logout)で:if [ -n "$ssh_auth_sock" ] ; then eval `/usr/bin/ssh-agent -k` fi macos mojave 10.14.5でテスト済み