さて、ArhLinuxをインストールしたThinkPad X240ですが、
毎回、ssh接続するのにパスワードを入力するのは手間ですよね。

(※別のパソコンからコマンドラインでのリモート接続がssh接続です。)

そんなわけで少しでも運用を楽にするように、筆者はssh鍵認証方式に切り替えて、
パスワードを入力せずにログイン可能な方法で運用しています。

今回はその手順について紹介していきます。

まず、ssh接続するにはopensshをインストールしてあることが前提です。

まだインストールしてない場合は以下でインストールします。

$ sudo pacman -S openssh

鍵認証ファイルを生成する

以下のコマンドを実行すると、鍵認証ファイルが生成されます。

$ ssh-keygen

コマンドを入力してエンターキーを押すと、パスワードを入力するよう聞かれますが、
パスワード入力せず、エンターだけで作成します。

すると以下2ファイルが~/.ssh以下に作成されます。

id_rsa、id_rsa.pub

「id_rsa.pub」は接続するクライアント側で使用する公開鍵
「id_rsa」のほうは待ち受け側に必要な秘密鍵となります。


鍵ファイルのリネーム

それぞれ以下のように鍵ファイルをリネームします。

「id_rsa」 →「authorized_keys」(SSHサーバ側で待ち受けに必要な鍵ファイル)

「id_rsa.pub」→「ホスト名.pem」(クライアントからの接続用鍵ファイル)

$ mv ~/.ssh/id_rsa ~/.ssh/authorized_keys
$mv ~/.ssh/id_rsa.pub ~/.ssh/tpx240.pem

(※ホスト名.pemは今回は筆者は「tpx240.pem」としました。)


クライアント向け鍵ファイルを移動する

クライアント側へ鍵ファイルを移動します。

筆者の場合は、macOSXやLinuxマシン側からscp接続して鍵ファイルを取得する方法で、
ファイルを移動させました。

以下はmacOSX側から実行します。

$ scp 192.168.x.x :~/.ssh/tpx240.pem ~/.ssh

ここでパスワードを聞かれますが、これはインストール時に設定したログインパスワードを入力します。

ファイルを取得したらアクセス権は「0600」としておきます。(読取専用)

$ chmod 0600 ~/ssh/tpx240.pem

sshd_configの修正(サーバ側の設定)

ファイルを移動したらopensshサーバの設定ファイルを編集して、
鍵認証での接続を行うように設定変更します。

$ sudo vi /etc/ssh/sshd_config

以下の箇所を修正または追記します。

PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords yes
ChallengeResponseAuthentication no

筆者の場合、公開WEBサーバのセキュリティ強化のため、
password認証は無効化として、鍵認証だけとしています。(PasswordAuthentication no)

設定変更が終わったら、以下コマンドでsshdサービスを再起動し、接続を試してみましょう。

$ sudo systemctl restart sshd

macOSX側からssh接続する際は、以下のようにします。

$ ssh [UserName]@192.168.x.x -i ~/.ssh/tpx240.pem 

ログインできない場合、スペルなどが間違っているか、アクセス権が適切でないか、
サーバ側の設定ファイルを確認してみましょう。


configファイルを作成する(クライアント側の設定)

次に毎回ssh接続時にこの文字列を入力するのは手間ですから、
.sshフォルダにconfigファイルを作成し、以下のように編集します。

$ vi .ssh/config
Host tpx240
	HostName 192.168.x.x
	user hogehoge 
	IdentityFile ~/.ssh/tpx240.pem
	port 22
	TCPKeepAlive yes
	IdentitiesOnly yes

これでssh tpx240でパスワードレスでssh接続が可能となります。

何かの役に立てば幸いです。