もし GNOME を使っているのであれば、seahorse アプリケーション (「パスワードと暗号化鍵」) がそれを代行してくれます。File_ -> New -> Secure Shell Key.
ターミナルがお好きなら、ssh-keygen -t <type>
を実行して鍵ペアを生成してください。有効な鍵ペアの種類は以下の通りです。
プログラムは パスフレーズ と 新しい鍵を保存する場所を尋ねてきます。他のすべてのツールがその場所を探すことになるため、推奨されるデフォルトパスを使用することをお勧めします。
繰り返しになりますが、seahorse が代行してくれることがよくあります - My Personal Keys で SSH 鍵を右クリックして Configure key for secure shell を選択してください。
または、ターミナルでssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
。
または、完全に手動でステップバイステップで:
1.リモートホスト上のリモートユーザーのホームディレクトリに.ssh
という名前のディレクトリを作成する(まだ存在していない場合)。
2. そのディレクトリに、authorized_keys
という名前のファイルを作成する(まだ存在しない場合)。
3. リモートのumask
が通常よりも自由度が高い場合に備えて、ファイルをグループ書き込み可能ではないものにします。chmod go-w ~/.ssh ~/.ssh/authorized_keys
.
4. 最後に、何らかの方法でローカルの公開鍵(`~/.ssh/idrsa.pub)の内容をリモートの
~/.ssh/authorized_keys`ファイルにコピー(追加)する。
秘密鍵を ssh agent にロードすると、復号化された鍵がメモリに保持されます。これは、サーバにシェルをかけるときにパスワードを再入力しないようにするためのものです。
まず、エージェントを起動するか、起動した通信ソケットのパスを変数にロードする必要があります。ターミナルでssh-agentを実行すると、エージェント変数を割り当てたり設定したりするためのコマンドが生成されます。これらのコマンドは、別の端末で使用するためにファイルに保存することができます。あるいは、これらのコマンドを実行して、別の端末で同じエージェントを再利用することを忘れてしまうこともできます。
鍵のロードは、eval $(ssh-agent)
を実行してパスフレーズを与えるだけの簡単な問題である。
GNOME を使っている場合、gnome-keyring-daemon は通常 ssh-agent と同じ SSH エージェント機能を提供しているので、何も起動する必要はありません。ログイン時にも、GNOME は自動的に鍵をロードしてロックを解除します。
すべてが正しく行われている場合、ssh-add
を使用してもパスワードの入力を促すことはありません。鍵ではなくエージェントに何か問題がある場合は、ユーザアカウントのパスワードではなく、鍵のパスフレーズを入力するように求められる。
正しい鍵がエージェントにロードされていれば、通信に ssh を使用するものはすべて、ユーザアカウントのパスワードを入力しなくても動作します。scp 、sftp 、rsync などのプログラムがこれを利用しています。
ssh user@server
の代わりに id_dsa
を使い、ECDSA は id_rsa
になります。 id_ecdsa
を使っていますが、5.0 よりも古いものが使われていることはほとんどないでしょう。authorized_keys2
, lsh
, その他の (Unix とそうでない) SSH サーバはこのチュートリアルには含まれていません。公開鍵をリモートホストにコピーする:
エージェント変数を再利用のために保存する (精巧な例)
ssh-agent \> ~/.ssh/cross-terminal-agent . ~/.ssh/cross-terminal-agent
あなたはどの Unix 上にいるのか、どの Unix に接続しているのか、どのシェルを使っているのか、どの SSH バリアントを使っているのか、などを指定していません。これは比較的最近のバージョンの OpenSSH をベースにしていますが、多くの Unix で使われています。
これはすべてローカルのデスクトップシステムからのものです。
ssh-keygen
鍵名はデフォルトのものを使うようにしてください。このキーにパスフレーズを設定することをお勧めします。"-t rsa" は悪い考えではありませんが、おそらく必要ないでしょう。
ssh-copy-id username@server
これは、ログインに使用するパスワードを尋ねてきます。(手でやる必要はない)
それから、これ。
`ssh-agent`
またはこれかな
exec ssh-agent sh
とか。
exec ssh-agent bash
これで鍵を保持する SSH エージェントが起動します。最近の多くの Unix の亜種では、グラフィカルにログインしていれば、この処理はすでに行われています。最初の variant (バックトーク付き) では、ssh-agent をバックグラウンドに置き、それと通信するための環境変数を設定します。2 番目の 2 つは、エージェントがあなたのためにシェルを実行し、あなたがシェルを終了するときにエージェントが終了するようにします。
最近の多くの Unix の亜種では、特にグラフィカルにログインしている場合には、すでにエージェントが動作しています。"ps aux | grep ssh-agent
“ や ”ps -ef | grep ssh-agent
“ を試してみるといいかもしれません; 何かが既に動いている場合は、それを使います。
そして最後に
ssh-add
パスフレーズを尋ねてきます。グラフィカルに尋ねてくるようにする方法もあります。これを自動化するために、ログインスクリプトに ssh-agent と ssh-add を入れることができます (設定は使用するシェルによって異なります)。しかし、いくつかの Unix の亜種 (例えば、現在の Ubuntu Linux) では、ほとんどのことが自動的に行われます。
これで、「ssh username@server
」は認証を求めなくても動作するはずです。裏では、ssh-agent が保持している鍵を使って、エージェントに魔法の署名のトリックをしてもらっています。
Windowsでも PuTTY で可能です。
公開鍵と秘密鍵のペアをすべて設定したら(他の回答が示すように)、PuttyGenを実行してください。 そこでは、既に設定した既存の秘密鍵を読み込み、PuTTY秘密鍵(ppk)として保存します。
そしてPuTTYで、オートログインしたい保存したセッションをクリックしてLoadをクリックするだけです。ここから左ペインの「Connection -> Data」に進み、「Auto-login username」にリモートサーバのユーザ名を入力します。
その後、Connection -> SSH -> Authと進み、PuttyGenで作成したppkをブラウズします:
その後、セッションページに戻り、先ほどロードしたセッションを保存します。
ServerFault ](https://serverfault.com/questions/2429/how-do-you-setup-ssh-to-authenticate-using-keys-instead-of-a-username-password/2521#2521) の非常に似たような質問から、私は ssh-copy-id を使うことをお勧めします。
ssh-copy-id は、リモートマシンにログインするために ssh を使用するスクリプトです (おそらくログインパスワードを使用するので、複数の ID を巧妙に使用していない限り、パスワード認証は有効になっているはずです)
また、リモートユーザのホーム、~/.ssh、および ~///.ssh の権限も変更します。 ssh、および ~/.ssh/authorized_keys の権限を変更して、グループ書き込み可能性を削除します (リモート sshd の設定で StrictModes が設定されている場合は、そうしないとログインできなくなります)。
-i オプションが与えられた場合、ssh-agent に鍵があるかどうかにかかわらず、ID ファイル (デフォルトは ~/.ssh/identity.pub) が使用されます。
必要なのはこれだけです。
ssh-copy-id user@host
パスワードを一度入力すれば完了です。
ssh 鍵の設定方法については既に説明したとおりですが、ログインごとではなく、システムプロセスごとに一つだけ処理できる ssh-agent コンソールフロントエンドとして Keychain をお勧めします。
同じことを行うGNOMEやKDEツールが既にあることは知っていますが、もしあなたがコンソールジャンキータイプならば、これは素晴らしいものです(ほとんどのUnixシステムで使用できます)。
これを使うには、~/.bashrc
(他のシェルでも同じように) に以下を追加するだけです:
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[-f ~/.keychain/${HOSTNAME}-sh] && . ~/.keychain/${HOSTNAME}-sh
[-f ~/.keychain/${HOSTNAME}-sh-gpg] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
本当に本当に本当に本当に長いチュートリアルでイライラしていたので、この非常に短いチュートリアルを書いてみました。)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password
ssh destID@destMachine #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
http://linuxproblem.org/art http://linuxproblem.org/art_9.html
目的
Linux と OpenSSH を使ってタスクを自動化したいとします。そのためには、ホスト A / ユーザ a からホスト B / ユーザ b への自動ログインが必要です。
Putty には -pw
オプションがあり、デスクトップ上に以下のようなショートカットを作成することができます。
"C:\Program Files\PuTTY\putty.exe" -ssh user@192.168.2.2 -pw your_password
ssh-keygen
を実行する。(タイプを指定する必要があると言われたら、ssh-keygen -t rsa
を実行してください。) ファイルの場所を聞かれたら、デフォルトのままにしてください。パスフレーズを聞かれたら、パスフレーズなしの場合はエンターキーを押す。cat ~/.ssh/id_rsa.pub
(または ssh-keygen
のデフォルトのファイルの場所が何であれ、ssh
のインストールが非常に古い ~/.ssh/authorized_keys
でないと異なる) ; 出力をクリップボードにコピーする。~/.ssh
を編集する(slogin
が存在しない場合は、id_rsa.pub
をどこかに移動してください。) クリップボード(他のホストからの0x6&を含む)をこのファイルに貼り付けます。Linux のターミナルですべてを実行するには、以下のようにします。
ホスト上
cd ~/.ssh/
ssh-keygen -t {rsa|dsa} -b {1024|2048|4096}。-C “some comment text if you want” -f id_ArbitraryName
{}内の項目はオプションで、rsaかdsaを使ってビットサイズを選ぶ(大きい方が安全)
それから、authorizedkeysとauthorizedkeys2ファイルにパーミッションを追加する必要があります。
cat id_AribtraryName.pub ➡︎>> authorized_keys
cat id_AribtraryName.pub ➡︎>> authorized_keys2
そして、id_AribtraryNameファイルを、sshしたいボックスにダウンロードします。Unix ベースの場合は、設定ファイルが必要になるかもしれません (puttyでは、上の方が説明してくれています)。
On the Connecting Box
In your config file - vim ~/.ssh/config
Host example.host.com # or your computer name
User username
IdentityFile ~/.ssh/id_ArbitraryName
設定ファイルには 600 のパーミッションが必要です。SSh フォルダには 700 が必要です。
省略されることが多い設定の問題に遭遇した場合に役立つことを願っています。