キーがssh-agentにない場合、ssh / sloginでssh-addを実行しますか?


10

Gnomeを実行しているとき、IDがロードされていない場合、ssh-agentはslogin / sshに対してssh-addを実行します。リモートシェルでこの動作を模倣したいのですが、ログイン時にssh-addを実行することをお勧めします。ログインするたびではなく、リモートシェルでslogin / sshを実行する場合にのみ、ssh-addを実行します。

回答:


9

私はbashシェルを介してこの解決策を考え出しました。

.bashrcに追加:

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ `ssh-add -l` != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}

7

実際にはもっと簡単な方法があります。ssh-add -lキーがある場合はtrue(0)を返し、それ以外の場合はfalse(1)を返すため、最初の関数を次のように置き換えることができます。

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

 


1

«これはインタラクティブセッションです»パートの追加でさらに簡単に

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id

0

OpenSSHの新しいバージョンでは、で有効AddKeysToAgent yesにすると、最初の使用時にエージェントにキーを追加できます~/.ssh/config

(私はこれを/superuser//a/1114257/42546から学びました。さまざまなStackExchangeサイト間で回答を処理するための適切なStackOverflowエチケットが何かはわかりません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.