SSHが気になったので調べてみた。
SSHとは
SSH(Secure Shell)は安全に、ネットワークに接続されたリモートホストの通信を実現します。
同様にリモートホストの通信を実現するtelnetがありますが、SSHはよりセキュアなファイル転送やリモート操作を実行します。
telnetの通信内容はプレーンテキスト(暗号化されてない文:平文)なので、通信を盗聴されるとアカウントやパスワードが盗み取られる可能性があります。
SSHにはv1(バージョン1系)とv2(バージョン2系)があり、公開鍵暗号方式に違いがあります。SSHv1は脆弱性が見つかっており、現在はSSHv2を使用するのが一般的です。
なお、Linuxの他に、WindowsにもOpenSSHが使われており、両方のバージョンに対応しています。しかしそれぞれのバージョンに互換性はないようです。
(Windows11では/C:/Windows/System32/OpenSSHがありました。Macは標準で入っていた気がします)
またTera TermやPuttyといったアプリをインストールすることによって、SSH接続をすることができます。
SSHv1の公開鍵暗号方式
RSA
SSHv2の公開鍵暗号方式
ECDSA、RSA、DSA
sshを使用するための準備
クライアント側にopensshクライアントをインストールする
- $ sudo apt -y update
- $ sudo apt -y install openssh-client
sshサーバにopensshサーバをインストール(Ubuntuにはなかった)
- $ sudo apt -y update
- $ sudo apt -y install openssh-server
下記、Ubuntuでの例)
vboxuser@ubuntu22:/etc/ssh$ sudo apt update
[sudo] password for vboxuser:
ヒット:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
取得:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease
ヒット:4 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease
取得:5 http://security.ubuntu.com/ubuntu jammy-security/main amd64 DEP-11 Metadata [41.6 kB]
取得:6 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 DEP-11 Metadata [21.9 kB]
174 kB を 2秒 で取得しました (89.9 kB/s)
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています… 完了
状態情報を読み取っています… 完了
アップグレードできるパッケージが 5 個あります。表示するには ‘apt list –upgradable’ を実行してください。
vboxuser@ubuntu22:/etc/ssh$ sudo apt -y install openssh-server
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています… 完了
状態情報を読み取っています… 完了
以下の追加パッケージがインストールされます:
ncurses-term openssh-sftp-server ssh-import-id
提案パッケージ:
molly-guard monkeysphere ssh-askpass
以下のパッケージが新たにインストールされます:
ncurses-term openssh-server openssh-sftp-server ssh-import-id
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 5 個。
750 kB のアーカイブを取得する必要があります。
この操作後に追加で 6,046 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 openssh-sftp-server amd64 1:8.9p1-3ubuntu0.1 [38.7 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 openssh-server amd64 1:8.9p1-3ubuntu0.1 [434 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 ncurses-term all 6.3-2ubuntu0.1 [267 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 ssh-import-id all 5.11-0ubuntu1 [10.1 kB]
750 kB を 2秒 で取得しました (306 kB/s)
パッケージを事前設定しています …
以前に未選択のパッケージ openssh-sftp-server を選択しています。
(データベースを読み込んでいます … 現在 232002 個のファイルとディレクトリがインストールされています。)
…/openssh-sftp-server_1%3a8.9p1-3ubuntu0.1_amd64.deb を展開する準備をしています …
openssh-sftp-server (1:8.9p1-3ubuntu0.1) を展開しています…
以前に未選択のパッケージ openssh-server を選択しています。
…/openssh-server_1%3a8.9p1-3ubuntu0.1_amd64.deb を展開する準備をしています …
openssh-server (1:8.9p1-3ubuntu0.1) を展開しています…
以前に未選択のパッケージ ncurses-term を選択しています。
…/ncurses-term_6.3-2ubuntu0.1_all.deb を展開する準備をしています …
ncurses-term (6.3-2ubuntu0.1) を展開しています…
以前に未選択のパッケージ ssh-import-id を選択しています。
…/ssh-import-id_5.11-0ubuntu1_all.deb を展開する準備をしています …
ssh-import-id (5.11-0ubuntu1) を展開しています…
openssh-sftp-server (1:8.9p1-3ubuntu0.1) を設定しています …
openssh-server (1:8.9p1-3ubuntu0.1) を設定しています …
Creating config file /etc/ssh/sshd_config with new version
Creating SSH2 RSA key; this may take some time …
3072 SHA256:LUWRoyQsFPjObz3MmCq5SSvnEob8vqBsItS28XOi/WQ root@ubuntu22 (RSA)
Creating SSH2 ECDSA key; this may take some time …
256 SHA256:4gF4HmtmYbrXK4ZAA+ZcfvF5X5oCizUvRpyXTk7w1nE root@ubuntu22 (ECDSA)
Creating SSH2 ED25519 key; this may take some time …
256 SHA256:N7UfbltX7ksFubvq8IlMCEZuz/e77WqoGik5j19LLKQ root@ubuntu22 (ED25519)
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
rescue-ssh.target is a disabled or a static unit, not starting it.
ssh.socket is a disabled or a static unit, not starting it.
ssh-import-id (5.11-0ubuntu1) を設定しています …
ncurses-term (6.3-2ubuntu0.1) を設定しています …
man-db (2.10.2-1) のトリガを処理しています …
ufw (0.36.1-4build1) のトリガを処理しています …
- sshサーバ側の方で/etc/ssh/sshd_configの設定をする
下記、Ubuntuでの例
vboxuser@ubuntu22:/etc/ssh$ cat sshd_config
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don’t trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don’t read the user’s ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to ‘yes’ to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication may bypass
# the setting of “PermitRootLogin without-password”.
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and KbdInteractiveAuthentication to ‘no’.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
sshコマンドの使い方
sshクライアントから接続するには、sshコマンドを使います。
引数にはホスト名かIPアドレスを指定します。
ssh [ログインユーザー名@]ホスト
オプション
-p ポート番号
-l ユーザー名
-i 秘密鍵ファイルを指定する
例)
$ ssh 123,456,789
例)
$ ssh user1@123,456,789
気が向いたら追記するかも