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

気が向いたら追記するかも

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です