2009-07-18 16:51:50 +0000 2009-07-18 16:51:50 +0000
155
155

パスワードを入力しなくてもいいようにSSHを設定するにはどうすればいいですか?

ホストに接続するときにパスワードを入力しなくてもいいようにSSHを設定するにはどうすればいいですか?

回答 (10)

167
167
167
2009-07-18 17:36:45 +0000

SSH 鍵を生成する (鍵を持っていない場合)

もし GNOME を使っているのであれば、seahorse アプリケーション (「パスワードと暗号化鍵」) がそれを代行してくれます。File_ -> New -> Secure Shell Key.

ターミナルがお好きなら、ssh-keygen -t <type> を実行して鍵ペアを生成してください。有効な鍵ペアの種類は以下の通りです。

  • rsa: デフォルト
  • dsa: 1024ビットの鍵に制限されていることを除けば、ほぼ同等
  • ecdsa: 鍵が小さくて同じセキュリティだが、比較的新しく、SSH ソフトウェアではやや珍しい。
  • ed25519: 高いセキュリティ(サイドチャネル攻撃や弱い乱数発生器に対して より耐性がある)。署名生成が非常に速い。非常に新しい。OpenSSH ™>= 6.5 ](http://www.openssh.com/txt/release-6.5) でのみ利用可能。

プログラムは パスフレーズ と 新しい鍵を保存する場所を尋ねてきます。他のすべてのツールがその場所を探すことになるため、推奨されるデフォルトパスを使用することをお勧めします。

公開鍵をリモートサーバにアップロードする

繰り返しになりますが、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 エージェントにロードする

秘密鍵を ssh agent にロードすると、復号化された鍵がメモリに保持されます。これは、サーバにシェルをかけるときにパスワードを再入力しないようにするためのものです。

まず、エージェントを起動するか、起動した通信ソケットのパスを変数にロードする必要があります。ターミナルでssh-agentを実行すると、エージェント変数を割り当てたり設定したりするためのコマンドが生成されます。これらのコマンドは、別の端末で使用するためにファイルに保存することができます。あるいは、これらのコマンドを実行して、別の端末で同じエージェントを再利用することを忘れてしまうこともできます。

鍵のロードは、eval $(ssh-agent) を実行してパスフレーズを与えるだけの簡単な問題である。

GNOME を使っている場合、gnome-keyring-daemon は通常 ssh-agent と同じ SSH エージェント機能を提供しているので、何も起動する必要はありません。ログイン時にも、GNOME は自動的に鍵をロードしてロックを解除します。

パスワードなしでリモートサーバにシェルインする

すべてが正しく行われている場合、ssh-add を使用してもパスワードの入力を促すことはありません。鍵ではなくエージェントに何か問題がある場合は、ユーザアカウントのパスワードではなく、鍵のパスフレーズを入力するように求められる。

正しい鍵がエージェントにロードされていれば、通信に ssh を使用するものはすべて、ユーザアカウントのパスワードを入力しなくても動作します。scpsftprsync などのプログラムがこれを利用しています。


注意事項。

  • SSHv1 は非常に安全ではないので、SSHv2 鍵だけが必要です。
  • また、鍵は 1 種類だけ必要です - RSA か DSA のどちらかで十分です。(ed25519 と ECDSA はどちらも最近のものなので、どこでもサポートされているわけではありません)。
  • これらの手順は、RSA 鍵でも DSA 鍵でも同じである。DSA を使う場合は ssh user@server の代わりに id_dsa を使い、ECDSA は id_rsa になります。
  • 3.0 よりも古い OpenSSH サーバは id_ecdsa を使っていますが、5.0 よりも古いものが使われていることはほとんどないでしょう。
  • これらの指示は OpenSSH バージョン 3.0 以降にのみ適用されます。authorized_keys2, lsh, その他の (Unix とそうでない) SSH サーバはこのチュートリアルには含まれていません。

例。

  • 公開鍵をリモートホストにコピーする:

  • エージェント変数を再利用のために保存する (精巧な例) ssh-agent \> ~/.ssh/cross-terminal-agent . ~/.ssh/cross-terminal-agent

22
22
22
2009-07-18 17:28:34 +0000

あなたはどの 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 が保持している鍵を使って、エージェントに魔法の署名のトリックをしてもらっています。

11
11
11
2009-07-25 03:42:47 +0000

Windowsでも PuTTY で可能です。

公開鍵と秘密鍵のペアをすべて設定したら(他の回答が示すように)、PuttyGenを実行してください。 そこでは、既に設定した既存の秘密鍵を読み込み、PuTTY秘密鍵(ppk)として保存します。

そしてPuTTYで、オートログインしたい保存したセッションをクリックしてLoadをクリックするだけです。ここから左ペインの「Connection -> Data」に進み、「Auto-login username」にリモートサーバのユーザ名を入力します。

その後、Connection -> SSH -> Authと進み、PuttyGenで作成したppkをブラウズします:

その後、セッションページに戻り、先ほどロードしたセッションを保存します。

3
3
3
2009-07-18 17:39:21 +0000

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

パスワードを一度入力すれば完了です。

3
3
3
2009-07-18 17:57:35 +0000

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
2
2
2
2013-02-01 16:58:45 +0000

本当に本当に本当に本当に長いチュートリアルでイライラしていたので、この非常に短いチュートリアルを書いてみました。)

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
2
2
2
2009-07-18 16:55:59 +0000

http://linuxproblem.org/art http://linuxproblem.org/art_9.html

目的

Linux と OpenSSH を使ってタスクを自動化したいとします。そのためには、ホスト A / ユーザ a からホスト B / ユーザ b への自動ログインが必要です。

2
2
2
2012-12-02 23:11:47 +0000

Putty には -pw オプションがあり、デスクトップ上に以下のようなショートカットを作成することができます。

"C:\Program Files\PuTTY\putty.exe" -ssh user@192.168.2.2 -pw your_password
1
1
1
2009-07-18 17:06:33 +0000
  1. 接続しているホストで ssh-keygen を実行する。(タイプを指定する必要があると言われたら、ssh-keygen -t rsaを実行してください。) ファイルの場所を聞かれたら、デフォルトのままにしてください。パスフレーズを聞かれたら、パスフレーズなしの場合はエンターキーを押す。
  2. cat ~/.ssh/id_rsa.pub (または ssh-keygen のデフォルトのファイルの場所が何であれ、ssh のインストールが非常に古い ~/.ssh/authorized_keys でないと異なる) ; 出力をクリップボードにコピーする。
  3. 接続先のホストに接続したいアカウントで通常通りログインする。ファイル ~/.ssh を編集する(slogin が存在しない場合は、id_rsa.pub をどこかに移動してください。) クリップボード(他のホストからの0x6&を含む)をこのファイルに貼り付けます。
0
0
0
2012-10-25 12:27:48 +0000

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 が必要です。

省略されることが多い設定の問題に遭遇した場合に役立つことを願っています。