2台のサーバーがあります。どちらのサーバーもCentOS 5.6にあります。持っている秘密鍵(OpenSSH SSH-2秘密鍵)を使用して、サーバー1からサーバー2にSSHで接続したい。
UNIXでそれを行う方法がわかりません。しかし、PuTTYを使用してWindowsで行ったのは、OpenSSH秘密鍵をPuTTY-genにフィードして、秘密鍵をPPK形式で生成することでした。
ただし、サーバー2でSSHを介していくつかのコマンドを実行するbashスクリプトをサーバー1から作成します。
サーバー1の秘密鍵ファイルを使用してサーバー2にSSHで接続する方法を教えてください。
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
私はsshに-iオプションを付けてここにキーを追加しました。
Arg1、arg2を.shファイルと一緒に渡したい場合は、.shファイルの後に渡し、使用スペースを使用してそれを区切ります。
ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"
最初に行う必要があるのは、keygenコマンドを実行してキーを生成したことを確認することです。
ssh-keygen -t rsa
次に、このコマンドを使用してリモートサーバーにキーをプッシュし、サーバー名と一致するようにキーを変更します。
cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'
ソースマシン(ssh元)の公開キー(id_[rd]sa.pub
)を、sshを実行するユーザー名の宛先サーバーの~/.ssh/authorized_keys
ファイルに追加します。公開キーを紛失した場合は、ssh-keygen
を使用して新しいキーを作成することをお勧めします。そのためにデフォルトの引数を使用することは、ほとんどの目的で問題ないはずです。さらに詳しい説明が必要な場合は、Googleで利用できるチュートリアルが何千もあります。
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
を確認すると、公開鍵が追加されていることがわかります。