uetennis’s diary

プログラミングについて学んだ事やライフハックについてかきます

ssh接続 rootログインなし、パスワード認証なし、port指定

sshの復習用メモ

  1. sshとは
    1. sshとは、主にUNIXコンピュータで利用される、ネットワークを介して別のコンピュータにログインして操作するためのソフトウェアの一つ。通信経路が暗号化されるため、インターネットなどを経由しても安全にアクセスすることができる。
    2. 公開鍵暗号秘密鍵暗号を組み合わせて通信経路を暗号化し、パスワードなどの認証情報や入力されるコマンド、出力された処理結果などをすべて暗号化して送受信する。
  2. sshd (ssh daemon)
    1. UNIX系OSなどで、外部からのsshによる接続を受け付ける常駐プログラムのことを慣習的にsshdssh daemon/sshデーモン)という。
    2. sshは暗号化された通信経路を構築して外部から安全にコンピュータを遠隔操作するシステムで、sshdsshクライアントからの接続要求を受け付け、通信経路の暗号化や利用者の認証、操作コマンドの受信と実行などを行なう。sshサーバソフトには様々な種類があるが、ほとんどのソフトでは共通してsshdという実行ファイル名となっている。
  3. scp (secure copy/secure copy protocol)
    1. ネットワークを介して別のコンピュータを操作するsshの機能の一つで、手元のコンピュータとの間でファイルをコピーするもの。また、そのためのコマンドおよびプロトコル(通信規約)。
    2. sshは手元のコンピュータから遠隔地のコンピュータへの通信を暗号化し、認証情報やコマンドの発行、応答などの通信内容を安全にやりとりできる。scpはssh上でのファイルコピー機能で、接続先のコンピュータとの間で安全にファイルの送受信が行える。
    3. scpのコマンドの形式などはUNIXの標準ファイルコピーコマンドであるcpやrcpとほぼ同じで、これらと同じ感覚で使うことができる。一方、ssh上でファイル転送を行なうコマンドおよびプロトコルにはSFTPと呼ばれるものもあり、こちらはFTPに似たコマンド体系で操作することができる。
  4. ウェルノウンポートとは

    1. TCP/IPによる通信で利用されるTCPUDPのポート番号のうち、著名なサービスやプロトコルが利用するために予約されている0番から1023番のこと。
    2. インターネットなどのTCP/IPネットワークに接続されたコンピュータは、通信プロトコル(通信規約)のTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)を使用する際に、0番から65535番までの番号で識別される「ポート」(port)と呼ばれる接続の窓口を利用する。
    3. このうち、0から1023までの各ポートはそれぞれ特定のサービスやプロトコルが利用することが広く知られており、インターネットで公開するサーバはその番号を当該サービス、プロトコルで利用することが推奨されている。特に有名なのはHTTPの80番やFTPの20・21番、SMTPの25番、POP3110番DNSの53番などである。また、新しいプロトコルやサービスは1024番以降を利用することが慣例となっている。
    4. ただし、サーバ上でどのサービスをどのポートで動作させるかはソフトウェアによって設定できるようになっていることが多く、必ずしもウェルノウンポートでなければそのサービスを起動・利用できないわけではない。実際、HTTPのプロキシサーバなど、特殊な用途のためにわざと本来とは別のポート番号でサービスを提供する場合もある。
  5. SSHをインストール debianの場合

    • 下記のコマンドでアップデートし最新のSSHをインストール出来るようする。
    • apt update
    • 下記のコマンドでインストール
    • sudo apt install ssh

      sshd_configの設定変更

  6. PermitRootLoginを変更したい
    1. $ sudo vi /etc/ssh/sshd_config を入力してSSHの設定ファイルを開く
    2. Rootログインを禁止する為に
    3. #PermitRootLogin prohibit-passwordを
    4. PermitRootLogin noに変更
  7. port変更
    • ウェルノウンポートは避ける 0番から1023番は設定しちゃ良くないみたい。
    • ポートをデフォルトの22のままにしているとセキュリティー的に危ないそうなので22から別の数字に変更する
    • /etc/ssh/sshd_config
    • #Port 22
      Port *****
    • 最初から書いてある「Port 22」をコメントアウト消して、好きな番号(*****)を書いてやるだけ。
  8. パスワードログインの禁止、公開鍵でのログインのみできるようにする
    1. #PasswordAuthentication yesを
      
    2. PasswordAuthentication noに変更
      
    3. escボタンでコマンドモードに切り替えて、:wq!で保存して終了
      
$ sudo vim /etc/ssh/sshd_config
# Port 22をxxxxに変更 :well-known portから変更
# PermitRootLogin yesのyesをnoに変更 :sshでrootログイン禁止
# PasswordAuthentication yesのyesをnoに変更 :sshでパスワードログイン禁止

$ sudo /etc/init.d/ssh restart # sshd再起動

# MacのTerminalから実行
$ ssh username@IPアドレス -p xxxx # -pでポート番号指定

ssh接続 ・ 手順

手順 サーバー

  1. :~$ mkdir ~/.ssh # ~/.sshディレクトリを作る。
  2. :~$ chmod 700 ~/.ssh # 権限与える
:~$ mkdir ~/.ssh  # ~/.sshのディレクトリを作る。
:~$ chmod 700 ~/.ssh  # 権限与える

手順 ・ クライアント (ターミナル)

  1. $ ssh-keygen -t rsa #鍵を作る
  2. $ ls .ssh #鍵の確認 id_rsaとid_rsa.pubの2つあればいい。
  3. $ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys #公開認証鍵を送る
  4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes #yesと入力
  5. Password: #パスワード入力
  6. id_rsa.pub 100% 571 69.9KB/s 00:00 # 鍵が送れた。
#ミスも記載しています。
$ ssh-keygen -t rsa  #鍵を作る
$ ls .ssh     #鍵の確認   id_rsaとid_rsa.pubの2つあればいい。
id_rsa      id_rsa.pub  known_hosts
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxxxxx/.ssh/id_rsa): 
Created directory '/Users/xxxxxxxx/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/xxxxxxxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxxxxxxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vyb0pQ3j3NBRYtGORKUUPen5yn/T/SjvFXKL8ffvXt0 xxxxxxxx@mbp
The key's randomart image is:
+---[RSA xxxx]----+
|           .=*.. |
|           .+.*  |
|           o.* o |
|            o +  |
|        S  . + + |
|        ..+ o * *|
|       . +.O o +E|
|        . *.+ o+B|
|         o.  +++%|
+----[SHAxxx]-----+
$ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys   # 公開認証鍵を送る。
ssh: connect to host アドレス port 22: Connection refused          #しかし、port番号を変更していて22番にもどした。
lost connection
$ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys  # 公開認証鍵を送る
The authenticity of host 'アドレス (アドレス)' can't be established.
ECDSA key fingerprint is SHA256:HygdwrWMmJGzJNbqbH6iMGdrAxj5nUcwokoltR+iImk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? # Return押して失敗
Host key verification failed.
lost connection
$ scp ~/.ssh/id_rsa.pub ユーザー@アドレス:~/.ssh/authorized_keys # 公開認証鍵を送る
The authenticity of host 'アドレス (アドレス)' can't be established.
ECDSA key fingerprint is SHA256:HygdwrWMmJGzJNbqbH6iMGdrAxj5nUcwokoltR+iImk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes #yes入力
Warning: Permanently added 'アドレス' (ECDSA) to the list of known hosts.
Password:    #パスワード入力
id_rsa.pub                                                           100%  571    69.9KB/s   00:00    # 鍵が送れた。

手順・ サーバー

  1. :~$ cd ~/.ssh # ~/.sshディレクトリに移動
  2. :~/.ssh$ ls # authorized_keysがあるか確認。もしあれば、公開認証鍵が送られている。
  3. :~/.ssh$ chmod 600 authorized_keys # authorized_keysに権限を与える。
  4. :~$ sudo vim /etc/ssh/sshd_config # 設定変更
  5. :~$ sudo /etc/init.d/ssh restart #sshの再起動...ちなみにサーバーの再起動では反映されないから注意
:~$ cd ~/.ssh   #  ~/.sshのディレクトリに移動
:~/.ssh$ ls   # authorized_keysがあるか確認。もしあれば、公開認証鍵が送られている。
authorized_keys
:~/.ssh$ chmod 600 authorized_keys # authorized_keysに権限を与える。
:~/.ssh$ cd
:~$ sudo vim /etc/ssh/sshd_config  # 設定変更
:~$ sudo /etc/init.d/ssh restart   #sshの再起動...ちなみにサーバーの再起動では反映されないから注意
[ ok ] Restarting ssh (via systemctl): ssh.service.
:~$ 

ssh接続 ・ rootログインなし・ポート22ログインなし・パスワード認証なしでログイン

$ ssh  root@アドレス  #rootログイン   失敗でOK
ssh: connect to host アドレス port 22: Connection refused
$ ssh  usename@アドレス #デフォルトのport22   失敗でOK
ssh: connect to host アドレス port 22: Connection refused
$ ssh  usename@アドレス -p xxxx  # /etc/ssh/sshd_configに設定したpirt番号      ログイン成功
Linuxxxxxxxxxxxxx-amdxx #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Apr xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx :~$