今回は2つのサーバー間(CentOS7)で、コマンドラインからSSH接続する方法を紹介する。

具体的に説明すると、Aサーバーに対し公開鍵認証を使い、BサーバーからsshコマンドでSSH接続するといったところだ。

ユーザーの追加

分かりやすいように、今回はどちらのサーバーにも「bkupusr」というユーザーを追加する。

useradd bkupusr
passwd bkupusr
※パスワードを設定

上記のコマンドをA、B両サーバーで実行する。

ユーザーを作成したら「su」コマンドでユーザーを切り替えておこう。

su bkupusr

接続元サーバーで公開鍵・秘密鍵を作成する

続いて、接続元サーバーとなるBサーバーで認証に必要となる公開鍵と秘密鍵を作成する。

ssh-keygen -t ed25519 -P ""

※Enter file in which to save the keyと聞かれるがそのままEnter

上記コマンドを実行すると、bkupusrのホームディレクトリに「.ssh」ディレクトリが作られ、中には秘密鍵「id_ed25519」と公開鍵「id_ed25519.pub」が入っている。

公開鍵を接続先サーバーに送る

次に作成した公開鍵を接続先のAサーバーへ「authorized_keys」というファイル名でコピーする。

本来scpコマンドで送信できるはずなのだが、俺の環境では上手くいかなかったので、手動でAサーバーの「/home/bkupusr/.ssh/」に「authorized_keys」を作成し、Bサーバーの「id_ed25519.pub」の中身をコピペして用意した。

BサーバーからsshコマンドでAサーバーに接続

鍵の用意ができたら、いよいよSSH接続を実行する。

ssh -i /home/bkupusr/.ssh/id_ed25519 bkupusr@xxx.xxx.xxx.xxx

これでAサーバーへログインできるはずだ。

一応sshコマンドの説明をしておくと、-iオプションで秘密鍵のパスを指定し、その後「接続先のユーザー名@ホスト名」という形式で接続先を指定している。

なお、ポート番号はデフォルトで22番指定となっているが、別のポート番号を指定する際は以下のとおり、-pオプションを指定する。

ssh -p xxxxx -i /home/bkupusr/.ssh/id_ed25519 bkupusr@xxx.xxx.xxx.xxx