web-dev-qa-db-ja.com

パスワードなしの22以外のポートのsshリモートサーバー

私は通常、リモートサーバーに接続しています

ssh [email protected] -p 11000

ユーザーに毎回パスワードを与える。 sshを使用して接続するたびにパスワードを入力しないようにするにはどうすればよいですか?

16

最初、これを ~/.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回だけパスフレーズを入力する必要があります。

23
phunehehe

鍵ベースの認証 を参照してください。

7
9000

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、ガイドを引用します。

4
Faheem Mitha