秘密鍵を使用してリモートサーバーにsshする方法は?


77

2台のサーバーがあります。両方のサーバーはCentOS 5.6にあります。所有している秘密キー(OpenSSH SSH-2秘密キー)を使用して、サーバー1からサーバー2にSSHで接続します。

UNIX上でそれを行う方法がわかりません。しかし、Puttyを使用してWindowsで行ったことは、OpenSSH秘密鍵をputty-genに送り、PPK形式の秘密鍵を生成することでした。

ただし、サーバー1からbashスクリプトを作成し、SSHを介してサーバー2でいくつかのコマンドを実行します。

サーバー1の秘密キーファイルを使用してサーバー2にSSHで接続するにはどうすればよいですか?


1
多くのLinuxおよびUnixシステムでは、これを使用して行うことができますssh-copy-id user@machine
Paul Tomblin

回答:


66

SSH公開鍵が必要であり、ssh秘密鍵が必要です。キーはで生成できますssh_keygen。秘密鍵はサーバー1に保持し、公開鍵はサーバー2に保存する必要があります。

これについては、opensshのマンページで完全に説明されているため、多くを引用します。「認証」セクションをお読みください。また、openSSHマニュアルは本当に役立つはずです:http ://www.openssh.org/manual.html

sshはサーバーのセキュリティに影響するため注意してください。

からman ssh

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

これは、プライベートキーを.sshのホームディレクトリに保存できることを意味します。別の可能性は、-iパラメータスイッチを介してsshに特別なIDファイルを使用するように指示することです。からもman ssh

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

これは秘密鍵用です。ここで、サーバー2に公開キーを導入する必要があります。再び、次からの引用ですman ssh

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

これを実現する最も簡単な方法は、ファイルをサーバー2にコピーしてauthorized_keysファイルに追加することです。

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

sshデーモンには、公開鍵による承認が許可されている必要がありますman ssh_config。を参照してください。通常、これは設定ファイルに次のステートメントを追加することで実行できます。

PubkeyAuthentication yes

10
こんにちは、ありがとうございますが、これだけが必要です。ssh -i keyfileありがとう!
アイヴァンモンセラー11年

8
キーを生成した後、サーバーにインストールする最も簡単で推奨される方法はssh-copy-id次のとおりssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.comです。
ジル

5
ssh-add接続しているコンピューターにキーを作成した後、実行する必要があることを誰もが忘れてしまうのは興味深いことです。それがほとんどの人にとって頭痛の種です。
ルカ

3
重要な注意:クライアントは多くのプライベートキーを持ち、プライベート〜/ .ssh / configファイルの任意の名前に基づいて選択できます。ここで、Host =は任意の名前、HostNameは名前またはIPアドレス、Port =はターゲットポート、ユーザーは宛先ユーザー名であり、ItentityFile =は秘密鍵ファイルを指します。この機能セットはしばしば見過ごされており、名前空間で衝突する複数のキーペアを持つなど、多くの構成問題の解決策です。
リチャードT

1
を使用してSSHで接続しようとすると$ ssh -i ~/.ssh/id_rsa myuser@ssh.myhost.com、エラーが発生します。 myuser@ssh.myhost.com: Permission denied (publickey).キーを作成し、を使用してローカルに追加ssh-addし、リモートサーバーの認証キーとして追加します。
アーロンフランケ

21

ここでキーを追加するために、-iオプションでsshを使用しました。

arg1、arg2を.shファイルとともに渡す場合は、.shファイルの後に渡すだけで、使用スペースを使用して区切ります。

ssh -i home/avr/new.pem ar@231.221.54.8 "/var/www/beta/betatolive.sh mmin 30"


1
右の権限を設定することを忘れないでください:chmod 600 home/avr/new.pem
ブライアン・ハーク

16

最初に行う必要があるのは、keygenコマンドを実行してキーを生成したことを確認することです。

ssh-keygen -t rsa

次に、このコマンドを使用して、キーをリモートサーバーにプッシュし、サーバー名と一致するように変更します。

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

6
ssh-copy-id user@hostname代わりに電話しましょう
-andrej

7

id_[rd]sa.pub発信元マシン(発信元)の公開鍵()を、~/.ssh/authorized_keyssshするユーザー名の宛先サーバーのファイルに追加します。公開鍵を紛失した場合は、で新しいものを作成する必要がありますssh-keygen。そのためにデフォルトの引数を使用することは、ほとんどの目的で問題ありません。より詳細な手順が必要な場合は、Googleで検索できるチュートリアルが何千もあります。


4

ssh-copy-id-ローカルで使用可能なキーを使用して、リモートマシンでのログインを許可します

ssh-copy-idサーバー1で使用し、キーペア(で生成されたssh-keygen)があると仮定します。

ssh-copy-id -i ~/.ssh/id_rsa user@server2_hostname

これで、秘密鍵を使用してsshでサーバー2にsshできるようになります

ssh -i ~/.ssh/id_rsa user@server2_hostname

実際、cat ~/.ssh/authorized_keysサーバー2 をチェックすると、公開キーが追加されていることがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.