いくつかのSSH設定

目次

この記事に使われるコマンド

SSHサービスを起動するsudo service ssh start
SSHサービスを再起動するsudo service ssh restart
SSHデーモンを実行する(Msys2)/usr/bin/sshd
SSHデーモンを実行する(Termux)sshd
SSHデーモンを実行する(Termux,デバッグモード)sshd -d

SSH接続が自動的に切断される問題解決

SSHでリモートに接続しているときに,しばらく操作しないうちに, デフォルトのSSH設定だと,接続が自動的に切断されてしまう可能性があります。 その場合は,エラーメッセージが以下のようになります。

  Write failed: Broken pipe

この問題を解決するために,SSHクライアントやSSHサーバーの設定を変更する必要があります。

SSHクライアントの設定変更

SSHクライアントの構成ファイル /etc/ssh/ssh_config (すべてのユーザーに効く)や ~/.ssh/config (現在のユーザーだけに効く)を開きます。 次のように行を追加または変更します。

  ServerAliveInterval 15
  ServerAliveCountMax 10

以上の設定では, SSHクライアントからサーバーに15秒ごとに10回応答確認を行います。 それでも応答がなければクライアント側から接続を切断します。

構成ファイルを変更したら設定を有効にするためにSSHサービスを再起動します

SSHサーバーの設定変更

SSHサーバーの構成ファイル /etc/ssh/sshd_config を開きます。 次のように行を追加または変更します。

  ClientAliveInterval 30
  ClientAliveCountMax 5

以上の設定では, SSHサーバーからクライアントに30秒ごとに5回応答確認を行います。 それでも応答がなければサーバー側から接続を切断します。

構成ファイルを変更したら設定を有効にするためにSSHサービスを再起動します

ヒント

tmuxやscreenのようなツールを使えば, SSH接続が切断されたり,予期しない問題が行われたりした場合でも, リモートサーバーが正常の動いている限り, 再接続のときや直接にサーバーに触るときは, 以前のセッションを制御することで作業環境をすばやく回復できるのでおすすめです。

アンドロイドにおけるSSHサービス

まずは,Google Playストアから無料のTermuxアプリを入手しインストールします。 インストールが終わればアプリを開いて,次のようにパッケージopensshを導入します。

  apt install openssh

opensshの導入ができれば, 次のコマンドを実行してキーファイルを生成します。 ここで,キーファイルへのアクセスパーミッションを 現在のユーザーに限定させる必要があります。 そうでなければ,安全上にSSHサービスが正常に機能しない場合があります。

  ssh-keygen
  cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
  chmod 600 ~/.ssh/authorized_keys
  chmod 700 ~/.ssh

キーファイルが生成されたら, Termuxのコマンドラインに sshd を入力しSSHデーモンを実行します。 先ほど生成されたプライベートキーファイル ~/.ssh/id_rsa を ローカルネットワークにあるほかのSSHクライアントとして使うPCにコピーしたうえ, 以下のコマンドでアンドロイドのSSHサーバーにつながることができます。

  ssh ip.address -p 8022 -i /path_to/id_rsa

注:SSHクライアントへコピーしたプライベートキーファイルを含めて, すべてのキーファイルについて,パーミッションの設定に注意を払う必要があります。 上記のSSHサーバーのときの設定をご参照ください。

他のSSHに関する問題

no hostkeys

  • エラーメッセージ

  sshd: no hostkeys available
  • 解決方法

  sudo ssh-keygen -A

could not open connection

  • エラーメッセージ

  Could not open a connection to your authentication agent.
  • 解決方法

  eval "$(ssh-agent -s)" # for bash / zsh
  eval (ssh-agent -c)    # for fish

SSHサーバーのセキュリティを向上させる

構成ファイル /etc/ssh/sshd_config を開いて, 次のように行を追加または変更します。

  Port ????
  PasswordAuthentication no

ポート番号を 22 以外のほかの数字に設定しておき, パスワードによるSSH接続も無効にしておきます。

このページを編集

Xin Li
Xin Li
講師

機械学習及び深層学習の応用に関する研究に従事し,不均一・偏りのあるデータに対するサンプリング手法および学習アルゴリズムに注目している。詳細はこちら

comments powered by Disqus
次へ
前へ

関連項目