ssh-copy-idは信頼を確立します(パスワードなしのリモートログイン)

3172 ワード

ソース:http://roclinux.cn
==
運維をしている同級生にとって、2台のUNIX/Linux機械にssh信頼関係を築くのはよくあることだ.
皆さんが前に信頼関係を築くにはどんな方法を採用していたのか分かりませんが、どうせ私は純粋な手作りです.
「machineAマシンのnameAアカウント」から「machineBマシンのnameBアカウント」へのssh信頼関係を確立し、パスワードを入力せずにログインできる目的を達成する必要がある場合は、私は一般的にこのようにしています.
1  machineA   /home/nameA/.ssh/id_rsa.pub         



2    machineB   /home/nameB/.ssh ,        authorized_keys  ,

  1            。



3   authorized_keys     ,   group/other   w  



4    machineA  ,  ssh        

実は上の機械の信頼関係を追加する方法はとても友好的ではありませんて、全手作業で操作する必要があって、その上2台の機械の間で往復して切り替えなければならなくて、しかも操作の正確性は完全に人が保証して、問題と間違いが発生しやすいです.
現在、「SSH信頼関係自動化構築ツール」:ssh-copy-idが盛大に発売されています.(これは画期的な時間で、道具の使い方を学ばせていただきました^^)
 
【5分学会ssh-copy-id】
ssh信頼関係が確立されていない場合、machineAマシンのnameAからmachineBマシンのnameBにログインすると、パスワードを入力する必要があることがわかります.
[nameA@machineA]$ ssh nameB@machineB -p 22000

nameB@machineB's password:

私たちは今、新しく学んだコマンドで信頼関係を構築していますが、「識別が見つかりません」とヒントを与えています.これは、nameAアカウントに独自の公開鍵秘密鍵がないからです.
[nameA@machineA]$ ssh-copy-id nameB@machineB

/usr/bin/ssh-copy-id: ERROR: No identities found

私たちは今nameAアカウントのために自分の公開鍵の秘密鍵を確立する必要があります.確立したら、/home/nameA/.sshにidを多く出します.rsa(秘密鍵)とid_rsa.pub(公開鍵)2つのファイル:
[nameA@machineA]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/nameA/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /home/nameA/.ssh/id_rsa.

Your public key has been saved in /home/nameA/.ssh/id_rsa.pub.

The key fingerprint is:

bb:3b:14:be:5d:45:ab:72:27:ec:93:21:c6:a3:7d:77 nameA@machineA

The key's randomart image is:

+--[ RSA 2048]----+

|                 |

|                 |

|                 |

|        .   .    |

|       .X. o .   |

|       .o.  +    |

|       .*+.o     |

|       +++C+o E  |

|      . +C++ .   |

+-----------------+

では、準備が整い、信頼関係を構築し始めました.
[nameA@machineA]$ ssh-copy-id nameB@machineB

ssh: connect to host machineB port 22: Connection refused

悲劇、新しいエラーのヒントがまた来て、もとは私達のB機械のsshdのサービスポートは22ではありませんて、22000で、しかしssh-copy-id命令はこの情報を知りません.これはどうしよう.
-pパラメータを追加してポートを設定してみましょう.
[nameA@machineA]$ ssh-copy-id nameB@machineB -p 22000

ssh: connect to host machineB port 22: Connection refused

まだ使いにくいのか、-pパラメータはssh-copy-idコマンドで全く認識されていません.manssh-copy-idを見ると、このオプションはありません.
まあ、関系を売らないで、実は解决方法は少しも复雑ではありませんて、ただ1つの小さい技巧を使って、それは:
[nameA@machineA]ssh-copy-id "-p 22000 nameB@machineB"

nameB@machineB's password:

[nameB@machineB]

やっとパスワードなしでログインできるようになりました.
[nameA@machineA]$ ssh nameB@machineB -p 22000

[nameB@machineB]$

実はssh-copy-idは一般的なスクリプトファイルです.
[nameA@machineA]$ which ssh-copy-id

/usr/bin/ssh-copy-id

[nameA@machineA]$ file /usr/bin/ssh-copy-id

/usr/bin/ssh-copy-id: POSIX shell script text executable

興味があれば、このスクリプトを読むことができます.わずか50行しかありませんが、shellプログラミングのテクニックを学ぶことができます.