SSH で、リモートのサーバにパスワードなしでログインする方法

  1. まず、ローカルのマシンで ssh-keygen というコマンドを使って公開鍵・秘密鍵のペアを作成する。オプションの -t dsa だが、DSA (Digital Signature Algorithm) の説明はここ
    # ssh-keygen -t dsa
  2. 上のコマンドを実行すると、.ssh というディレクトリに、id_dsa と id_dsa.pub という 2つのファイルができあがる。どちらもテキストファイルで、この 2つが鍵ペアとなる。拡張子 .pub はその名の通り公開鍵(public key)だから、こちらの方をリモートのサーバに転送する。 転送の仕方は、
    # ssh-copy-id remote_username@remote_host.com
    または、
    # ssh-copy-id -i ~/.ssh/id_dsa.pub remote_username@remote_host.com
    となり、実際にはリモートホストのログイン直後のホームディレクトリにある .ssh というディレクトリの中の authorized_keys (/etc/ssh/sshd_config 中にデフォルトの値として記述してある。Ubuntu の場合、コメントになっているが、特に指定しない場合はホームディレクトリの .ssh/authorized_keys がデフォルトのようである)という、これまたテキストファイルに上の id_dsa.pub ファイルが追記される。
  3. もし、ssh-copy-id というコマンドがなかったら、ローカルマシンのホームディレクトリから以下のように実行すればよい。
    # cat .ssh/id_dsa.pub | ssh remote_username@remote_host.com "cat >> .ssh/authorized_keys"
トラックバック URL: https://perltips.twinkle.cc/trackback/308