ノンパス(パスワードなし)でSSH接続する

IT技術

はじめに

sshやscpコマンドで接続する際、通常はパスワードを入力する必要がある。

[root@testserver1 /]# ssh testserver2
root@testserver2's password: ★要パスワード入力
Last login: Fri Sep 10 23:52:56 2021 from testserver1
[root@testserver2 ~]#

本記事ではノンパス(パスワードなし)でSSH接続する方法を記載する。

検証環境

SSH接続元/先サーバともに、「CentOS 7.9」

ノンパス(パスワードなし)でSSH接続する方法

[方法1] 接続元サーバで秘密鍵・公開鍵のセットを作成し、公開鍵を接続先サーバに登録する

秘密鍵・公開鍵の作成【接続元サーバ】

[root@testserver1 /]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ★入力なしでEnter
Enter passphrase (empty for no passphrase): ★入力なしでEnter
Enter same passphrase again: ★入力なしでEnter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:h0pob*********************E3gDxjVbw root@testserver1
The key's randomart image is:
+---[RSA 2048]----+
|  o   o.         |
|   + . .         |
〜〜〜中略〜〜〜
|...o..o +o       |
+----[SHA256]-----+
[root@testserver1 /]# 
[root@testserver1 /]# ls -l ~/.ssh/
total 12
-rw------- 1 root root 1675 Sep 11 00:17 id_rsa ★秘密鍵が作成された
-rw-r--r-- 1 root root  398 Sep 11 00:17 id_rsa.pub ★公開鍵が作成された
-rw-r--r-- 1 root root  184 Sep  5 02:28 known_hosts
[root@testserver1 /]#

公開鍵を接続先サーバにコピー【接続元サーバ】

[root@testserver1 /]# ssh-copy-id -i ~/.ssh//id_rsa.pub root@testserver2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh//id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@testserver2's password: ★接続先サーバ[testserver2]のrootユーザのパスワードを入力
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@testserver2'"
and check to make sure that only the key(s) you wanted were added.
[root@testserver1 /]#

コピーされた公開鍵の確認【接続先サーバ】

[root@testserver2 /]# ls -l ~/.ssh/
total 8
-rw------- 1 root root 398 Sep 11 00:28 authorized_keys ★公開鍵が登録されるファイル
-rw-r--r-- 1 root root 184 Sep  5 02:30 known_hosts
[root@testserver2 /]# 
[root@testserver2 /]# cat ~/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC********************9ecHi1 root@testserver1 ★コピーされた公開鍵情報
[root@testserver2 /]#

SSH接続【接続元サーバ】

パスワード入力を求められることなく、SSH接続できた。

[root@testserver1 /]# ssh root@testserver2
Last login: Fri Sep 10 23:53:21 2021 from testserver1
[root@testserver2 ~]# 
[root@testserver2 ~]# uname -n
testserver2
[root@testserver2 ~]#

[方法2] sshpassコマンドを使う

ノンパスではないが、パスワードを引数として入力してSSH接続する方法もある。
sshpassコマンドをインストールして使用する。

sshコマンドのインストール【接続元サーバ】

[root@testserver1 /]# yum install sshpass -y
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: centos-distro.cavecreek.net
 * extras: centos-distro.cavecreek.net
 * updates: centos-distro.1gservers.com
Resolving Dependencies
--> Running transaction check
---> Package sshpass.x86_64 0:1.06-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================
 Package                 Arch                   Version                      Repository              Size
==========================================================================================================
Installing:
 sshpass                 x86_64                 1.06-2.el7                   extras                  21 k
Transaction Summary
==========================================================================================================
Install  1 Package
Total download size: 21 k
Installed size: 38 k
Downloading packages:
sshpass-1.06-2.el7.x86_64.rpm                                                      |  21 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : sshpass-1.06-2.el7.x86_64                                                              1/1 
  Verifying  : sshpass-1.06-2.el7.x86_64                                                              1/1 
Installed:
  sshpass.x86_64 0:1.06-2.el7                                                                             
Complete!
[root@testserver1 /]#

sshpassコマンドを使用したSSH接続【接続元サーバ】

[root@testserver1 /]# sshpass -p '<接続先サーバのrootパスワード>' ssh root@testserver2
Last login: Sat Sep 11 00:43:43 2021 from test_testserver1_1.test_dockernet
[root@testserver2 ~]# 
[root@testserver2 ~]# uname -n
testserver2
[root@testserver2 ~]#
タイトルとURLをコピーしました