ホストに接続するときにパスワードを入力する必要がないようにSSHを設定する方法
あなたがたまたまGNOMEを使うなら、タツノオトシゴアプリケーション( "パスワードと暗号化キー")があなたのためにそれをすることができます:ファイル - >新しい - >セキュアシェルキー。
端末を好むのであれば、ssh-keygen -t <type>
を実行してキーペアを生成してください。有効な鍵ペアの種類は次のとおりです。
プログラムは、 パスフレーズ と新しいキーを保存する場所を尋ねます。他のすべてのツールがそこで探すので、推奨されたデフォルトパスを使用することをお勧めします。
繰り返しますが、タツノオトシゴがあなたのためにそれをすることができます - 私の個人鍵で、あなたのSSH鍵を右クリックしそしてを選択セキュアシェルのキーを設定します。
または、端末のssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-Host
。
または、完全に手動でステップバイステップで:
.ssh
という名前のディレクトリを作成します(まだ存在していない場合)。authorized_keys
という名前のファイルを作成します(まだ存在しない場合)。umask
がいつもより寛大であるなら、ファイルをグループ書き込み可能にしないでください:chmod go-w ~/.ssh ~/.ssh/authorized_keys
。~/.ssh/id_rsa.pub
)の内容をリモートの~/.ssh/authorized_keys
ファイルにコピー(追加)します。あなたの秘密鍵をsshエージェントにロードすると、復号化された鍵はメモリに保持されます。シェルにサーバーを入れるたびにパスワードを再入力しないようにする必要があります。
まず、エージェントを起動するか、起動した通信ソケットのパスを変数に読み込む必要があります。端末でssh-agentを実行すると、エージェント変数の割り当てと設定のためのコマンドが生成されます。これらのコマンドは、別の端末で使用するためにファイルに保存することができます。あるいは、これらのコマンドを実行して、別の端末で同じエージェントを再使用することを忘れる可能性があります。例:eval $(ssh-agent)
。
キーをロードするのは、ssh-add
を実行してパスフレーズを渡すという簡単なことです。
GNOMEを使用している場合、gnome-keyring-daemonは通常ssh-agentと同じSSHエージェント機能を提供するので、何も起動する必要はありません。 GNOMEもログイン時に自動的に鍵をロードしてロック解除します。
すべて正しく行われた場合、ssh user@server
を使用してもパスワードの入力を求められることはありません。キーではなくエージェントに問題がある場合は、ユーザーアカウントのパスワードではなく、キーのパスフレーズを入力するように求められます。
正しいキーがエージェントにロードされると、通信にsshを使用するものはすべて、ユーザーアカウントのパスワードを入力しなくても機能します。 scp、sftp、rsyncなどのプログラムはこれを利用します。
id_dsa
の代わりにid_rsa
を使用すると、ECDSAにはid_ecdsa
が付きます。authorized_keys2
を使っていました - しかし、5.0より古いものが使われているのを見つけることは本当にありそうもないです。lsh
、ssh.com
、およびその他の(Unixではなく)SSHサーバーはこのチュートリアルには含まれていません。公開鍵をリモートホストにコピーする:
ssh-copy-id -i〜/ .ssh/id_rsa.pub myaccount @ remotehost#this cat〜/ .ssh/id_rsa.pub | ssh myaccount @ remotehost\ 'mkdir -p〜/ .ssh; cat >>〜/ .ssh/authorized_keys '#またはこれ
ssh-agent>〜/ .ssh /クロスターミナルエージェント 〜/ .ssh /クロスターミナルエージェント
どのUnixを使っているのか、どのUnixに接続しているのか、どのShellを使っているのか、どのSSHの変種を使っているのかなどを指定しませんでした。これは、かなり最近のバージョンのOpenSSHに基づいています。これは、多くのUNIXの亜種で使用されています。
これはすべてローカルデスクトップシステムからのものです。
ssh-keygen
キー名には必ずデフォルトを使用してください。私はあなたがそのキーにパスフレーズを設定することを提案します、そうでなければそれはセキュリティ問題です。 "-t rsa"は悪い考えではありませんが、おそらく必要ではありません。
ssh-copy-id username@server
それはあなたがログインに使用するパスワードを尋ねるでしょう、そしてあなたのためにauthorized_keysのものを設定します。 (手動でする必要はありません)
それで、これ:
`ssh-agent`
または多分これ:
exec ssh-agent sh
または
exec ssh-agent bash
あなたの鍵を保持できるSSHエージェントが起動します。あなたがグラフィカルにログインしているなら、現代の多くのUnixの変種では、これはすでに起こっているでしょう。最初の変種(バッククォート付き)はssh-agentをバックグラウンドに置き、それと通信するための環境変数を設定します。 2番目の2つでは、エージェントにシェルを実行させるので、シェルを終了するとエージェントも終了します。
特にあなたがグラフィカルにログインした場合は、最近の多くのUnixの変種がすでにあなたのためにエージェントを実行しているでしょう。あなたは "ps aux | grep ssh-agent
"や "ps -ef | grep ssh-agent
"を試すかもしれません。何かがすでに実行されている場合はそれを使用してください。
それから、最後に:
ssh-add
パスフレーズを要求します。 ssh-keygenに渡したものを渡してください。それをグラフィカルに質問させる方法もあります。これを自動化するためにssh-agentとssh-addをログインスクリプトに入れることができます(セットアップは使用するシェルによって異なります)。鍵を作成し、ssh-copy-idを使ってそれをリモートホストに設定するだけです。
これで、 "ssh username@server
"は認証を求めずに動作するはずです。舞台裏では、ssh-agentが保持しているキーを使用して、エージェントにそれに魔法の署名のトリックをするよう依頼しています。
Windows上でも PuTTY でこれを行うことができます。
公開鍵と秘密鍵のペアをすべて設定したら(他の答えが示すように)、PuttyGenを実行します。そこに、既に設定した既存の秘密鍵をロードし、それをPuTTY秘密鍵(ppk)として保存します。
次にPuTTYで、自動ログインしたい保存済みセッションをクリックして[Load]をクリックします。ここから接続 - >左ペインのデータへ行き、 "自動ログインユーザー名"にそのリモートサーバーのユーザー名を入力してください。
その後、Connection - > SSH - > Authの順に進み、PuttyGenで作成したppkを参照してください。
その後、セッションページに戻って、以前にロードしたセッションを保存します。
ServerFault についての非常によく似た質問から、 ssh-copy-id を使用することをお勧めします。認証キーを設定します。
ssh-copy-idは、sshを使用してリモートマシンにログインするスクリプトです(おそらくログインパスワードを使用します。したがって、複数のIDを巧妙に使用していない限り、パスワード認証を有効にする必要があります)。
また、リモートユーザーのhome、〜/ .ssh、および〜/ .ssh/authorized_keysのアクセス権を変更してグループの書き込み権限を削除します(リモートsshdの設定でStrictModesが設定されていると、ログインできなくなります)。
-iオプションが指定されている場合は、ssh-agentにキーがあるかどうかにかかわらず、識別ファイル(デフォルトは〜/ .ssh/identity.pub)が使用されます。
あなたがする必要があるのは単にこれです:
ssh-copy-id user@Host
一度パスワードを入力すれば、移動できます。
Sshキーを設定する方法についてすでに説明されていること以外に、 キーチェーン をssh-agentとして使用することをお勧めしますログインごとではなくシステムプロセスごとに1つだけを処理できるコンソールフロントエンド。
私はすでに同じことをする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
PuTTYには -pw
オプションがあり、デスクトップに次のようなショートカットを作成できます。
"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
私は本当に非常に長いチュートリアルのcosと本当に本当にイライラした取得した後、この非常に短いチュートリアルを書きました本当に本当に簡単です:)
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_9.html
あなたのねらい
タスクを自動化するためにLinuxとOpenSSHを使いたいのです。したがって、ホストA /ユーザーaからホストB /ユーザーbへの自動ログインが必要です。シェルスクリプト内からsshを呼び出したいので、パスワードを入力したくはありません。
ssh-keygen
を実行します。 (タイプを指定する必要があることが示された場合は、ssh-keygen -t rsa
を実行してください。)ファイルの場所を尋ねられたら、デフォルトを使用してください。パスフレーズの入力を求められたら、Enterキーを押してパスフレーズを入力しません。cat ~/.ssh/id_rsa.pub
(またはssh-keygen
内のデフォルトのファイルの場所が何であれ、実際には古い古いssh
インストールが必要ですが)出力をクリップボードにコピーします。~/.ssh/authorized_keys
を編集します(~/.ssh
が存在しない場合は、どこかにslogin
。これは、適切な権限で作成するための簡単で簡単な方法です)。あなたのクリップボード(他のホストからのid_rsa.pub
を含む)をこのファイルに貼り付けてください。Linuxの端末でそれをすべてやりたいのなら:
ホスト上
cd〜/ .ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "必要に応じてコメントを追加するテキスト" -f id_ArbitraryName
{}内の項目はオプションで、rsaまたはdsaを使用してビットサイズを選択します(大きいほど安全です)
それから、authorized_keysとauthorized_keys2ファイルにパーミッションを追加する必要があります。
cat id_ArbitraryName.pub >> authorized_keys
cat id_AribtraryName.pub >> authorized_keys2
それから、あなたがsshしたいボックスにid_AribtraryNameファイルをダウンロードしてください。接続ボックスがUNIXベースの場合、設定ファイルが必要になるかもしれません(PuTTYでは、上の誰かがそれをカバーしています)。
接続ボックス上
あなたの設定ファイルに - vim〜/ .ssh/config
ホストexample.Host.com#またはあなたのコンピューター名
ユーザーのユーザー名
IdentityFile〜/ .ssh/id_ArbitraryName
設定ファイルには600の権限が必要です。SShフォルダには700が必要です。
あなたがたくさん省略されている設定の問題に遭遇した場合に役立つことを願っています。