【ArchLinux】sshでパスワードレス接続する
さて、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接続が可能となります。
何かの役に立てば幸いです。