回答:
彼らが使用して(自分のローカルマシン上で)自分の鍵ペアを生成する必要があります。各ユーザーのためにssh-keygen -t rsa
(rsa
と交換することができるdsa
か、rsa1
それらのオプションが推奨されていないものの、あまりにも)。次に、ログインしているサーバーに公開鍵(id_rsa.pub
)のコンテンツを配置する必要があり~/.ssh/authorized_keys
ます。
実際には、デフォルトで* nixにあるスクリプト(ssh-copy-id)を好みます(Mac OS Xにも簡単に配置できます)。これは自動的に行われます。manページから:
ssh-copy-idは、sshを使用してリモートマシンにログインするスクリプトです(おそらくログインパスワードを使用しているため、複数のIDを巧妙に使用していない限り、パスワード認証を有効にする必要があります)
また、リモートユーザーのホーム、〜/ .ssh、および〜/ .ssh / authorized_keysのアクセス許可を変更して、グループの書き込み可能性を削除します(リモートsshdの構成にStrictModesが設定されている場合、ログインができなくなります)。
-iオプションが指定されている場合、ssh-agentにキーがあるかどうかに関係なく、IDファイル(デフォルトは〜/ .ssh / identity.pub)が使用されます。
これは非常に簡単です。ここに簡単なチュートリアルがあります。
主なポイントは次のとおりです。
ssh-keygen
マシンで実行します。これにより、公開キーと秘密キーが生成されます。~/.ssh/id_rsa.pub
)の内容を~/.ssh/authorized_keys
リモートマシンにコピーアンドペーストします。これにより、マシン上の秘密キーにアクセスできる人は誰でもリモートマシンに同じアクセス権を与えることに注意してください。したがって、キーペアを生成するときに、セキュリティを強化するためにここにパスワードを入力できます。
Windowsユーザーがパテをセットアップする場合
他の人が言ったことを要約すると、SSH鍵の設定は簡単で非常に貴重です。
マシン上では、SSHingになることから、あなたの鍵のペアを生成する必要があります。
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
指示に従ってEnterを押し、プロンプトが表示されたらパスフレーズを入力します。これは、現在のホストとSSHで接続するホストの両方の通常のログインパスワードとは異なることが理想です。
次に、生成したキーをSSHに接続するホストにコピーする必要があります。ほとんどのLinuxディストリビューションには、ssh-copy-id
これを行うためのツールがあります。
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
ディストリビューションにそれがない場合は、キーを宛先ホストにコピーし、(おそらく既存の).ssh/authorized_keys
ファイルに追加する必要があります。
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
最後に、SSHキーを最大限に活用するには、SSHエージェントを実行する必要があります。デスクトップ環境(Gnome、KDEなど)を使用している場合、ログアウトして再度ログインするだけでSSHエージェントが起動します。そうでない場合、あなたは(あなたのシェルのRCファイルに以下を追加することができ.bashrc
、.profile
など、):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
これはチェックリストとして意図されています。ポイントごとにそれに従う場合、パスワードなしのログインに最もよくある落とし穴をカバーする必要があります。これらのポイントのほとんどは他の場所で言及されています。これは集約です。
接続を開始または受信するアカウントの下の各マシンに~/.ssh
ディレクトリが必要chmod 700
です。
(プライベート)キーはパスフレーズなしで生成する必要があります。そうしないと、クライアントが使用するパスフレーズ保持キーの復号化バージョンを保持するエージェントを開始できます。でエージェントを起動しssh-agent $SHELL
ます。$SHELL
見つけるのに時間がかかった部分です。エージェントを使用する場合はさまざまな詳細があるため、manページを参照してください。
デフォルトでは、最近のバージョンのsshdでは弱い(<2048ビットDSA)キーが受け入れられないことを忘れないでください。
接続を開始するには、クライアント側のマシンで以下を実行する必要があります。
あなたの秘密鍵を中に配置しなければならない~/.ssh/id_rsa
か、~/.ssh/id_dsa
適切に。別の名前を使用することもできますが、元のマシンのsshコマンドの-iオプションに含めて、秘密鍵を明示的に示す必要があります。
あなたの秘密鍵はでなければなりませんchmod 600
。
ホームフォルダーがであることを確認しますchmod 700
。
マシンがリクエストを受信できるようになりました。一般的なモデルは、管理者が所有していないマシン(共有Webホスティングなど)へのアクセスを許可する場所です。したがって、sshのアイデアは、アカウントを提供している人に公開キーを提供することです。そのため、通常、リクエストを受信するマシンに秘密鍵を配置しません。ただし、このマシンに発信sshも実行させる場合は、上記の手順で、発信元マシンとして扱う必要があります。
~/.ssh/authorized_keys
を受け取るアカウントの下で呼び出されるファイルに配置する必要があります。このアカウントを介して接続できる他のキーをここに配置することもできます。viで、PuTTYの貼り付けバッファーからファイルにキーを貼り付ける場合、特に注意が必要なのは、キーが「ssh-」で始まることです。挿入モードでない場合、最初の「s」はviを挿入モードにし、キーの残りの部分は正常に表示されます。ただし、キーの先頭に「s」がありません。それを見つけるのに何日もかかりました。chmod 600 ~/.ssh/authorized_keys
です。少なくともgwでなければなりません。他の人が言ったように、ユーザーはssh-keygenを使用してクライアントマシンで自分用のキーペアを作成し、ログインしたいマシンの〜/ .ssh / authorized_keysに公開キーを追加する必要があります。
ただし、より詳細な情報については、SSHであるThe Secure Shellを強くお勧めします。
ここには良いアドバイスがありますので、繰り返しません。キーでサインオンできるように1つのサーバーをセットアップしたら、この1つのライナーで同じことを行うように他のサーバーをセットアップできます。
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
ホームディレクトリにcdし、変数remoteを1つまたは複数のサーバー名として定義し、一度にまとめて実行します。要求するパスワードは、リモートサーバーのsshパスワードになります。もちろん、forループなしで簡易バージョンを使用できます。
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
注意:公開鍵のみをコピーしてください。sudoを使用しているユーザーがそれらをコピーしてパスフレーズをブルートフォースできるサーバー上に秘密キーを配置することは望ましくありません。