私は通常、リモートサーバーに接続しています
ssh [email protected] -p 11000
ユーザーに毎回パスワードを与える。 sshを使用して接続するたびにパスワードを入力しないようにするにはどうすればよいですか?
最初、これを ~/.ssh/config
に入れます:
Host server
HostName server.com
Port 11000
User user
ssh server
を実行して、パスワードを入力できます。
2番目、~/.ssh/
をチェックインして、id_rsa
およびid_rsa.pub
という名前のファイルがあるかどうかを確認します。そうでない場合は、キーが設定されていないため、ssh-keygen
を使用してペアを生成する必要があります。キーにパスワードを指定するかどうかを指定できます。生成されたファイルid_rsa.pub
は次のようになります。
ssh-rsa lotsofrandomtext user @ local
3番目、サーバーにSSHで接続し、存在しない場合は~/.ssh/authorized_keys
ファイルを作成します。次に、ここで前に生成した~/.ssh/id_rsa.pub
の内容を追加します。これは、ファイルの内容をクリップボードにコピーし、テキストエディタで~/.ssh/authorized_keys
を開いて貼り付けることを意味する場合があります。
または、コマンドssh-copy-id server
を使用します(server
を~/.ssh/config
の名前に置き換えます)。これは上記と同じことを行います。ときどきssh-copy-id
がスタックするのを見たので、あまり好きではありません。
これで、秘密鍵をパスフレーズで保護することを選択していない限り、ssh server
だけでsshを実行できるようになります。一般に、パスフレーズを使用しない場合は、秘密鍵を他の方法(フルディスク暗号化など)で保護する必要があります。
Fourth(秘密鍵をパスフレーズで保護する場合にのみ必要)、 これを~/.bashrc
に入力 :
start_ssh_agent() {
# Try to use an existing agent
save=~/.ssh-agent
if [[ -e "$save" ]]
then
. "$save" > /dev/null
fi
# No existing agent, start a new one
if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
then
ssh-agent > "$save"
. "$save" > /dev/null
ssh-add
fi
}
start_ssh_agent
これにより、コンピューターの起動ごとに1回だけパスフレーズを入力する必要があります。
鍵ベースの認証 を参照してください。
Phuneheheの答えの補足として、 keychain のガイドについては Gentoo Linux Keychain Guide を参照してください。キーチェーンは ssh-agent も使用します。 ssh-agentデーモンはパスフレーズを使用可能にします(ssh-agentデーモンが終了すると使用不可になります)が、キーチェーンreuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in
、ガイドを引用します。