お金をかけずにサーバーの勉強をしよう

Ubuntu Serverへの SSH接続とファイルコピー 3

2023年9月11日

メニューへ戻る

Linuxクライアントから sshコマンドを使って Ubuntu Serverに SSH接続します。

Ubuntu Serverへの SSH接続とファイルコピー 1」で SSH接続について軽く触れ、
Ubuntu Serverへの SSH接続とファイルコピー 2」で Windowsクライアントで Tera Termを使って SSH接続しました、

ここでは Linuxクライアントから Ubuntu Serverに SSH接続してみましょう。

環境はこのように。
別段なんの特殊性もないものです。

クライアント: Lubuntu 22.04.3
サーバー: Ubuntu Server 22.04.3


1.キーペア作成

この作業をします。
公開鍵と秘密鍵の作成

作成には Ubuntuにはデフォルトでインストールされていると思われる OpenSSHに付属の ssh-keygenコマンドを使います。

[-t]オプションで、暗号の種類(?)を指定できます。
あまり良くないんですが、公開鍵ファイルと秘密鍵ファイルの利用時のパスワードはなしにしています。

subro@Lubuntu2204:~$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/subro/.ssh/id_ed25519): Enterキー ← 公開鍵ファイルと秘密鍵ファイルの置き場所です。
Enter passphrase (empty for no passphrase): Enterキー ← パスワードなし。
Enter same passphrase again: Enterキー ← パスワードなし。
Your identification has been saved in /home/subro/.ssh/id_ed25519 ← 秘密鍵ファイル
Your public key has been saved in /home/subro/.ssh/id_ed25519.pub ← 公開鍵ファイル
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx subro@Lubuntu2204
The key's randomart image is:
+--[ED25519 256]--+
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
+----[SHA256]-----+

subro@Lubuntu2204:~$ ls -l .ssh
total 8
-rw------- 1 subro subro 411  9月 11 17:33 id_ed25519
-rw-r--r-- 1 subro subro  99  9月 11 17:33 id_ed25519.pub

[subro]ユーザーのホームディレクトリの下に、[.ssh]ディレクトリができて、公開鍵ファイルの [id_ed25519.pub] と秘密鍵ファイルの [id_ed25519] ができました。


2.公開鍵をサーバーに配置

この作業をします。
公開鍵をサーバーに配置

私の環境の Ubuntu Server 22.04.3 の IPアドレスは [192.168.1.108]、マシン名が [UbuntuServer2204-2] で運用していますので、以降ご承知おき下さい。

作成した公開鍵をサーバーに配置するというのは OpenSSHの場合だと、

SSHでのログイン先の (ここでは [UbuntuServer2204-2])
ログインユーザーの (ここでは [subro]ユーザー)
ホームディレクトリ直下の (ここでは [/home/subro]直下)
[.ssh]ディレクトリにある
[authorized_keys]ファイルに公開鍵データを追記

することを言います。

なので、まず公開鍵ファイルの内容をログイン先にどうにかして持っていかないといけません。

どうやって公開鍵ファイルを持っていくかは個々人の好みです。
仕事の場合ではサーバー管理者にファイルを渡して登録してもらうとかするかも知れません。

ここでは scpコマンドでノード間でのファイルコピーをやります。

subro@Lubuntu2204:~$ cd .ssh ← [.ssh]ディレクトリに移動します。

subro@Lubuntu2204:~/.ssh$ ls -l
total 8
-rw------- 1 subro subro 411  9月 11 17:33 id_ed25519
-rw-r--r-- 1 subro subro  99  9月 11 17:33 id_ed25519.pub

subro@Lubuntu2204:~/.ssh$ scp id_ed25519.pub subro@UbuntuServer2204-2:~/.ssh ← [UbuntuServer2204-2]の[subro]ユーザーを表します。
The authenticity of host 'ubuntuserver2204-2 (192.168.1.108)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ← 初めてログインするホストが信用できるか(怪しくないか)を聞かれています。
Warning: Permanently added 'ubuntuserver2204-2' (ED25519) to the list of known hosts.
subro@ubuntuserver2204-2's password: [UbuntuServer2204-2]の[subro]ユーザーのパスワード ← この時点ではまだパスワード認証でログインしています。
id_ed25519.pub                                        100%   99    51.2KB/s   00:00

公開鍵ファイルを [UbuntuServer2204-2] の [/home/subro/.ssh]ディレクトリにコピーできました。

次に [authorized_keys]ファイルへの追記をしますので、パスワード認証で [UbuntuServer2204-2] に sshコマンドでログインします。

subro@Lubuntu2204:~/.ssh$ ssh subro@UbuntuServer2204-2
subro@ubuntuserver2204-2's password: [UbuntuServer2204-2]の[subro]ユーザーのパスワード

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-79-generic x86_64)

〜〜〜 以下Welcomeメッセージは省略 〜〜〜

subro@UbuntuServer2204-2:~$

ログインできました。

追記をします。

subro@UbuntuServer2204-2:~$ cd .ssh ← [.ssh]ディレクトリに移動します。

ファイルのリストを見ます。先程 SCPでコピーした公開鍵ファイル[id_ed25519.pub]ファイルがあります。
subro@UbuntuServer2204-2:~/.ssh$ ls -l
合計 8
-rw------- 1 subro subro 197  9月 11 14:13 authorized_keys
-rw-r--r-- 1 subro subro  99  9月 11 17:52 id_ed25519.pub

リダイレクトを使って[authorized_keys]ファイルに追記します。
subro@UbuntuServer2204-2:~/.ssh$ cat id_ed25519.pub >> authorized_keys

いらなくなった[id_ed25519.pub]ファイルを削除します。
subro@UbuntuServer2204-2:~/.ssh$ rm id_ed25519.pub

subro@UbuntuServer2204-2:~/.ssh$ ls -l
合計 4
-rw------- 1 subro subro 296  9月 11 18:15 authorized_keys

subro@UbuntuServer2204-2:~/.ssh$ exit ← ログアウト

これで公開鍵をサーバーに配置する作業が完了しました。


3.公開鍵認証での SSH接続

改めて sshコマンドでログインしてみます。

subro@Lubuntu2204:~/.ssh$ ssh subro@UbuntuServer2204-2

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-79-generic x86_64)

〜〜〜 以下Welcomeメッセージは省略 〜〜〜

subro@UbuntuServer2204-2:~$

今度はパスワードを聞かれずにログインできました。
共通暗号鍵を使った暗号化通信が行われています。

この状態。\(^o^)/
共通鍵による暗号化通信


4.SCPによるファイル転送

別立てにしていますが、上で公開鍵ファイルを転送したのと全く同じです。

転送対象はこの [/home/subro/bbb.txt]ファイルです。

subro@Lubuntu2204:~$ cat bbb.txt
BBBBBBBBBBBBBBBBBBB

ノード間のコピーをします。

subro@Lubuntu2204:~$ scp bbb.txt subro@UbuntuServer2204-2:~
bbb.txt                                              100%   20    10.9KB/s   00:00

ログインパスワードを聞かれずにコピーできました。

ログイン先での確認です。
問題ないですね。

subro@UbuntuServer2204-2:~$ cat bbb.txt
BBBBBBBBBBBBBBBBBBB



5.ssh-copy-idコマンドでの公開鍵配置

実は 2の作業をもっと簡単にやる方法があります。
ただどういう事をしているかを理解してもらうため、この方法は最後に書くことにしました。

クライアントで ssh-copy-idコマンドを使うと、サーバーの [authorized_keys]ファイルへの登録まで一気にやってくれます。

[/home/subro/.ssh]ディレクトリで作業していますので、ご注意下さい。

subro@Lubuntu2204:~/.ssh$ ssh-copy-id -i id_ed25519 subro@UbuntuServer2204-2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_ed25519.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
subro@ubuntuserver2204-2's password: [UbuntuServer2204-2]の[subro]ユーザーのパスワード

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'subro@UbuntuServer2204-2'"
and check to make sure that only the key(s) you wanted were added.

これだけ。
簡単ですね。


==========
sshコマンドを使って、公開鍵認証による暗号化通信をやってみました。

Linux同士だともう息をするように自然にやっている作業なんですね。