ホストに接続するときにパスワードを入力する必要がないようにSSHを設定するにはどうすればよいですか?
~/.ssh/config
現在必要な変更を行う必要があるため、再プロンプトが表示されていました PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
ホストに接続するときにパスワードを入力する必要がないようにSSHを設定するにはどうすればよいですか?
~/.ssh/config
現在必要な変更を行う必要があるため、再プロンプトが表示されていました PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
回答:
たまたまGNOMEを使用している場合、タツノオトシゴアプリケーション(「パスワードと暗号化キー」)がそれを行うことができます:ファイル -> 新規 -> セキュアシェルキー。
端末を希望する場合は、実行してキーペアを生成します。有効なキーペアタイプは次のとおりです。ssh-keygen -t <type>
プログラムはパスフレーズと新しいキーを保存する場所を尋ねます。推奨されるデフォルトパスを使用することをお勧めします。他のすべてのツールがそこを検索するためです。
繰り返しますが、タツノオトシゴは多くの場合、あなたのためにそれを行うことができます-My Personal Keysで、SSHキーを右クリックし、Configure key for secure shellを選択します。
または、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 / cross-terminal-agent 。〜/ .ssh / cross-terminal-agent
ssh-copy-id
公開キーをターゲットホストにコピーし、アクセス許可を自動的に設定するコマンドがあります。
ssh-keygen -f ~/.ssh/id_rsa -N "";ssh-copy-id -i ~/.ssh/id_rsa username@server-ip-or-address
単に交換するusername@server-ip-or-address
)。
使用しているUnix、接続しているUnix、使用しているシェル、使用しているSSHバリアントなどを指定しませんでした。これは、多くのUNIXバリアントで使用されているOpenSSHの比較的最近のバージョンに基づいています。
これはすべてローカルデスクトップシステムからのものです。
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つでは、エージェントがシェルを実行するため、シェルを終了するとエージェントが終了します。
特にグラフィカルにログインしている場合、最近のUnixの多くの亜種には既にエージェントが実行されています。「ps aux | grep ssh-agent
」または「ps -ef | grep ssh-agent
」を試してください。既に何かが実行されている場合は、それを使用します。
そして、最後に:
ssh-add
パスフレーズを要求します。ssh-keygenに指定したものを指定します。グラフィカルに尋ねる方法もあります。また、ログインスクリプトにssh-agentとssh-addを配置して(使用するシェルによってセットアップが異なります)これを自動化できますが、一部のUnixバリアント(たとえば現在のUbuntu Linux)はそのほとんどを自動的に行うため、本当に必要なのは、キーを作成し、ssh-copy-idを使用してリモートホストにセットアップすることだけです。
これで、「ssh username@server
」は認証を要求せずに機能するはずです。舞台裏では、ssh-agentが保持しているキーを使用して、エージェントにマジック署名のトリックを実行するように依頼しています。
WindowsのPuTTYでもこれを行うことができます。
公開鍵と秘密鍵のペアをすべて設定したら(他の回答が示すように)、PuttyGenを実行します。そこに、既にセットアップした既存の秘密鍵をロードし、PuTTY秘密鍵(ppk)として保存します。
次に、PuTTYで、自動ログインする保存済みセッションをクリックし、[ロード]をクリックします。ここから、左ペインの[接続]-> [データ]に移動し、[自動ログインユーザー名]にそのリモートサーバーのユーザー名を入力します。
その後、Connection-> SSH-> Authに進み、PuttyGenで作成したppkを参照します。
次に、セッションページに戻り、以前にロードしたセッションを保存します。
ServerFaultに関する非常に似た質問から、ssh-copy-idを使用することをお勧めします。これは、認証キーのセットアップに関連するすべてのステップを実行します。
ssh-copy-idは、sshを使用してリモートマシンにログインするスクリプトです(おそらくログインパスワードを使用するため、複数のIDを巧妙に使用しない限り、パスワード認証を有効にする必要があります)
また、リモートユーザーのホーム、〜/ .ssh、および〜/ .ssh / authorized_keysの権限を変更して、グループの書き込み可能性を削除します(そうしないと、リモートsshdの構成にStrictModesが設定されている場合、ログインできなくなります)。
-iオプションが指定されている場合、ssh-agentにキーがあるかどうかに関係なく、IDファイル(デフォルトは〜/ .ssh / identity.pub)が使用されます。
あなたがする必要があるのは、これだけです:
ssh-copy-id user@host
パスワードを1回入力すると、準備完了です!
sshキーの設定方法については既に説明したこととは別に、Keychainはログインごとではなくシステムプロセスごとに1つだけを処理できるssh-agentコンソールフロントエンドとしてお勧めします。
同じことをする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
http://linuxproblem.org/art_9.html
あなたの目標
LinuxとOpenSSHを使用してタスクを自動化したい。したがって、ホストA /ユーザーaからホストB /ユーザーbへの自動ログインが必要です。シェルスクリプト内からsshを呼び出すため、パスワードを入力する必要はありません。
私は本当に非常に長いチュートリアルに本当にイライラしているので、この非常に短いチュートリアルを書いたので、本当に簡単です:)
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
ssh-keygen
ます。(タイプを指定する必要がある場合は、doを実行します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
次に、id_AribtraryNameファイルを、sshを実行するボックスにダウンロードします。接続ボックスがUNIXベースの場合、設定ファイルが必要になる場合があります(パテでは、上記の誰かがそれを説明しました)。
接続ボックス上
設定ファイル-vim〜/ .ssh / config
ホストexample.host.com#またはコンピューター名
ユーザー名
IdentityFile〜/ .ssh / id_ArbitraryName
構成ファイルには600のアクセス許可が必要です。SShフォルダーには700が必要です。
あなたがたくさん省略されている設定の問題に遭遇した場合に役立つことを願っています。