web-dev-qa-db-ja.com

プライベートキーを使用してリモートサーバーにSSHで接続する方法

2台のサーバーがあります。どちらのサーバーもCentOS 5.6にあります。持っている秘密鍵(OpenSSH SSH-2秘密鍵)を使用して、サーバー1からサーバー2にSSHで接続したい。

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

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

サーバー1の秘密鍵ファイルを使用してサーバー2にSSHで接続する方法を教えてください。

82
Aivan Monceller

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
70
echox

私はsshに-iオプションを付けてここにキーを追加しました。

Arg1、arg2を.shファイルと一緒に渡したい場合は、.shファイルの後に渡し、使用スペースを使用してそれを区切ります。

ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"

25
Avinash Raut

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

ssh-keygen -t rsa

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

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

ソースマシン(ssh元)の公開キー(id_[rd]sa.pub)を、sshを実行するユーザー名の宛先サーバーの~/.ssh/authorized_keysファイルに追加します。公開キーを紛失した場合は、ssh-keygenを使用して新しいキーを作成することをお勧めします。そのためにデフォルトの引数を使用することは、ほとんどの目的で問題ないはずです。さらに詳しい説明が必要な場合は、Googleで利用できるチュートリアルが何千もあります。

8
Kevin

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

実際、サーバー2でcat ~/.ssh/authorized_keysを確認すると、公開鍵が追加されていることがわかります。

6
Sida Zhou