SSH

Translation(s):Deutsch-English-Français-Italiano-Español-Português Brasileiro

ToDo:このページとフランス語のページをマージ(および翻訳)(より完全)

はじめに

SSHはSecure Shellの略で、安全でないネットワーク1を介した安全なリモートログインおよびその他の安全なネットワークサービスのためのプロトコルです。 より一般的な情報についてはWikipedia-Secure Shellを参照し、OpenSSHが最も一般的で最も広く使用されているSSHソフトウェアの実装についてはssh、lsh-client、またはdropbearを参照してください2。 SSHは、暗号化されていないtelnet、rlogin、およびrshを置き換え、多くの機能を追加します。

このドキュメントではOpenSSHコマンドスイートを使用しますが、次の二つの変数が定義されていることも前提としています:

remote_host=<the remote computer>remote_user=<your user name on $remote_host>

したがって、以下のレシピを使用する場合は、まずこれらの変数をリモートコンピュータ名とそのリモートコンピュータ上のユーザー名に設定します。 次に、以下のコマンドの切り取りと貼り付けが機能するはずです。 remote_hostはIPアドレスにすることもできます。

インストール

クライアントのインストール

通常、クライアントはデフォルトでインストールされます。 そうでない場合は、rootとして実行すれば十分です:

apt install openssh-client

サーバーのインストール

サーバーはリモート接続を可能にし、rootとして実行することによってインストールされます:

apt install openssh-server

設定ファイル

主な設定ファイルは/etc/sshディレクトリにあります:

  • ssh_config:クライアント設定ファイル

  • sshd_config:サーバー構成ファイル

さらに、このディレクトリには、ホストを識別する秘密鍵と公開鍵のペアが含まれています:

  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.Pub

OpenSSH5.73以降、新しい秘密鍵と公開鍵のペアが利用可能になりました:

  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.Pub

OpenSSH6.54以降、新しい秘密鍵と公開鍵のペアが利用可能になりました:

  • ssh_host_ed25519_key
  • ssh_host_ed25519_key.pub

ホストキーの再生成

rm /etc/ssh/ssh_host_*dpkg-reconfigure openssh-server

リモートログイン

パスワード付き

ユーザー$remote_userとしてuser remote_hostにログインする場合は、

ssh $remote_user@$remote_host

と入力してパスワードを入力します。

ローカルコンピュータとリモートコンピュータのユーザー名が同じ場合は、drop remote_user@-partを削除して、単純に

ssh $remote_host

と書くことができます。 リモートコンピュータの指紋を確認した後、パスワードを入力すると、sshがリモートホストに接続します。

共有キーの使用

sshの機能の一つは、リモートホストに接続するために秘密鍵と公開鍵のペアを使用しています。 SSHキーとも呼ばれます。 この方法では、毎回パスワードを入力せずにリモートホストにログインすることができます。 これを行うには、ローカルマシン上で秘密鍵/公開鍵のペアを生成し、リモートホスト上で公開鍵を預ける必要があります。

鍵を生成するには、ssh-keygenプログラムを次のように使用します。

ssh-keygen -t rsa

このプログラムは、~/ディレクトリに秘密鍵と公開鍵のペアを生成します。ssh。 プログラムは最初に、デフォルトで~/にあるキーの宛先ファイルを要求します。ssh。 その後、パスフレーズが要求されます。

注:パスフレーズを空のままにしないことをお勧めします。 あなたの秘密鍵を手に入れた攻撃者は、パスフレーズが空であるため、公開鍵を預けたホストに接続することができます。 長くて複雑なパスフレーズを選択します。

あなたの秘密鍵はid_rsa(他の誰かにそれを与えないでください)、あなたの公開鍵はid_rsaです。パブ… Ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

コマンドを使用して公開鍵をリモートホストにコピーしますこれで、リモートホストに簡単に接続でき、パスフェーズが要求されます。 完了すると、リモートホストに接続されます。 新しい接続の場合、セッション全体でパスフレーズが再度要求されることはありません。

キー管理

GUIを使用して

オプションで、seahorseは簡単に直感的なグラフィカルユーザーインターフェイス(GUI)を介して暗号化キーとパスワードを管理するGNOMEアプ タツノオトシゴは様々な操作を行うことができます。 SSHまたはPGPキーを作成し、設定し、キャッシュするなどします。 続きを読む.

セキュリティ保護

SSHサーバー

デフォルトでは、SSHサーバーは比較的安全です。 いくつかの良い習慣、設定オプション、および外部ユーティリティの助けを借りて、SSHサーバーでの”ロボット”とクラッカー

の良い習慣をさらに難しくすることが

  • /!\openssh-serverセキュリティ更新プログラムをできるだけ早く適用します。 既知のセキュリティホールから保護することができます。

  • パスワード/パスフレーズでのみSSHキー認証を有効にします。 パスワードのみの認証を無効にします。

  • fail2banは、事前定義された回数のログイン試行が失敗した後にIPアドレスを自動的に禁止するログファイルモニタです。 これは自動的にブルートフォース攻撃に対してガードします。

  • sshを使用するためのより良い方法https://lackof.org/taggart/hacking/ssh/

設定オプション

(!)ファイル/etc/ssh/sshd_configを編集してパラメータを変更し、次のようにsshサーバーを再起動する必要があります

service ssh restart
  • 認証にパスワードを使用することを無効にします(PasswordAuthentication no)。

  • ルートアカウントを使用して無効化します(PermitRootLogin no)。

  • 特定のユーザーまたはグループ(AllowUsersおよびAllowGroups)によるログインのみを許可します)

{I}オプションAllowUsersとAllowGroupsは、SSHサーバーのセキュリティを向上させません。 しかし、特定のケースでは、それらの使用は、ブルートフォース攻撃に少し長く抵抗することができます。

外部ユーティリティ

  • fail2ban:自動的にiptablesの助けを借りて、SSHサーバーをブルートフォースしようとしているIpをブラックリストに登録することができます。

  • デニーホスト : fail2banとして、denyhostsはsshへの接続を強制的にしようとするIPアドレスをブロックすることを可能にします。 しかし、fail2banとは対照的に、iptablesは使用しませんが、ファイル/etc/hostsを使用します。否定する。

SSHクライアント

SSHクライアントのグッドプラクティス

  • /!\openssh-client securityの更新プログラムをできるだけ早く適用します。 既知のセキュリティホールから保護することができます。

  • SSHキー認証を使用します。 パスワード認証ではなく

  • あなたのSSHキーに強力なパスワード/パスフレーズを追加します。 これにより、ブルートフォース攻撃のリスクが軽減されます。

その他の機能

GUIでファイルを表示

Konqueror、Dolphin、Krusader、Midnight Commanderなどのファイルマネージャでは、FISHを使用してGUIでファイルを表示することができます:

fish://username@server_name_or_ip

追加コマンド

scp

scpは、二つのマシン間でファイルを転送することを可能にするコマンドラインユーティリティです。

  • ファイルを送信する:
scp $source_file $remote_user@$remote_host:$destination_file
  • ローカルマシンへのファイルのコピー:
scp $remote_user@$remote_host:$source_file $destination_file

sftp

テキストモード

グラフィカルモード

clustersh

ssh-agentとssh-add

ssh-agentは、秘密鍵とそのパスフレーズを管理するのに便利なユーティリティです。 Debianのほとんどのデスクトップ環境は、(systemd user servicesまたは/etc/X11/Xsessionを介して)ssh-agentを実行するように既に設定されているため、手動で起動する必要はありません。

# Check if ssh-agent is runningenv | grep -i ssh

キーを管理するようにエージェントに指示する必要があります。

# List keys managed by the agentssh-add -l# Add your ssh keyssh-add ~/.ssh/your_private_key

秘密鍵が最初に必要になると、そのパスフレーズの入力を求められます。 ssh-agentはキーを覚えているので、パスフレーズがもう聞かれなくなります。

keychain

keychainは、keychainパッケージによって提供され、同じコンピュータの複数のセッションでsshエージェントを使用できるシェルスクリプトです。 最初の起動後に有効になると、ssh-agentはsshとの通信を可能にする永続的なソケットを作成します。 このソケットは、エージェントが開始されたセッションの環境でのみ参照されます。 Keychainはエージェントを検出し、このエージェントへのアクセスを他のセッションに伝播することを可能にします; これにより、マシン上のユーザーごとにssh-agentの単一のインスタンスを使用できます。

ssh-askpass

ssh-askpassは、それを使用するときに秘密鍵のパスワードを単に質問するユーティリティです。 いくつかの実装が存在します:

  • x11-ssh-askpass:X11のバージョン

  • kaskpass:ssh-askpassのKDE環境への統合

  • ssh-askpass-gnome : Gnome環境へのssh-askpassの統合

libpam-usb

libpam-usbはUSBスティックで認証を可能にするユーティリティ(Debian Jessieまでのみ利用可能)です。 このパッケージには便利なユーティリティが含まれています:pamusb-agent。 このユーティリティは、一度正しく設定され、それが接続された後、USBスティックに存在するSSHキーをロードし、それが切断されたときにそれらをアンロー

リモートコマンド

リモートコンピュータ上で一つのコマンドを実行したい場合は、ログインする必要はありません。 たとえば、ログインせずにコマンドを実行するようにsshに指示できます,

ssh $remote_user@$remote_host 'ls *.txt'

拡張子を持つすべてのファイルを一覧表示します。リモートコンピュータ上のtxt。 これは単一の目盛りの引用符で動作します。..’ここに示されているように、二重目盛りの引用符で”。..”、および引用符なし。 これらの3つのケースの間には違いがあるかもしれませんが、ここではまだ文書化されていません。

別のOSからDebianにSSHする

  • PuTTYはssh用のクライアントとして動作する端末エミュレータアプリケーションです。 これは、Windowsユーザーによって広く使用されています。

  • Wikipediaには、次のようなものがあります。

SSHの使用法の良い実践

あなたはこれを読む必要があります: https://lackof.org/taggart/hacking/ssh/

このドキュメントでは、通常のSSHユーザーが自分のアカウント(および同時にマシン全体)のセキュリティを損なうことを避けるために従うべき多くの良

~/を設定します。正しいキーのみを送信するにはssh/configを使用します。

Host master.debian.org User account IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

トラブルシューティング

OpenSSLバージョンの不一致。 1000105fに対して構築されている場合は、10001060

sshデーモンの起動時にこのようなエラーメッセージが表示された場合は、次のように実行する必要があります:

apt install openssh-server openssh-client

バグ#732940も参照してください。

SSHがハングします

問題

リモートコンピュータにSSHしようとしています。 しかし、SSHログイン中にセッションが無期限にハング/フリーズします。 したがって、コマンドプロンプトは表示されません。 また、SSHコマンドを使用できません:(SSHデバッグモードを使用すると、セッションは次の行debug2:channel0でハングします: OPENSSHを使用している場合、NATの背後にあるいくつかのルータで、考えられる原因

。 セッションセットアップ中に、パスワードが指定された後、OpenSSHはIPデータグラムのTOS(type of service)フィールドを設定します。 ルータはこれで窒息します。 その効果は、SSHセッションが無期限にハングすることです。 言い換えれば、SSHコマンドや接続はほとんど機能していないか、まったく機能していません。

Ipqos0x00

で解像度を設定し、ルーターの製造元がファームウェアを修正するまで。 その問題を解決するための1つのオプションは次のとおりです:

  1. openssh-serverとopenssh-clientのバージョンが5.7以上であることを再確認してください。 たとえば、以下の解決策はDebian7.11WheezyまたはOpenSSHバージョン6.0に付属しているより最近のもので動作するはずです。

  2. 次の二つのファイルのいずれかを編集します:

    ~/.ssh/config

    または

    /etc/ssh/ssh_config

    注:設定ファイルはユーザーごとであり、ssh_configファイルはすべてのユーザーおよびシステム全体用です。 不明な場合は、適切なユーザー設定ファイルを編集します。

    前のファイルの内容

    Host *

    後のファイルの内容

    Host * IPQoS 0x00
  3. 端末/コンソールウィンドウが既に開いている場合。 それらのすべてを完全に閉じます。 これを行うと、アクティブなSSHセッションが閉じられます。
  4. OpenSSHやDebianを再起動する必要はありません。 任意のリモートサーバーにSSHして再試行してください。 それは動作するはずです。 完了しましたその問題を正常に修正しました:)

    このヒントのためのジョーとcatmakerに感謝します:)

    での関連文書https://www.openssh.com/txt/release-5.7

netcatを使用した解像度

/!\警告:netcat/ProxyCommand nc%h%pオプションを使用する代わりに、IPQoS0x00で他の解像度を使用することを検討することをお勧めします。 IPQoS0x00は公式の組み込みOpenSSHオプションであるためです。 また、IPQoS0x00は、その問題を解決するためのより直接的な方法であり、潜在的により安全なオプションです。 IPQoS0x00は安全な転送のためにSSHの組み込み暗号化を使用するためです。 Netcatの暗号化されていない転送と比較してください。 出典:1 2. Netcat/ProxyCommand nc%h%pオプションを使用することを選択した場合は、読み取ります。

SSHハングの問題を解決する別のオプションは、ProxyCommand nc%h%pを使用することです。 これを行うには、IPQoS0x00で上記の解像度と同じ手順に従います。 ただし、IPQoS0x00を

ProxyCommand nc %h %p

SSH接続を有効に保つ

セキュリティ上の理由から、デフォルトではSSH接続は設定された期間後に自動的に閉じられます。 しかし、場合によっては、その接続を開いたままにしたい場合があります。 SSH接続を介したクラウドストレージなど。

/!\警告:keep SSH connection aliveオプションを有効にする前に。 SSHクライアントとSSHサーバーの両方を保護することを検討することをお勧めします。 たとえば、ユーザーがSSHセッションを開いたままにしておき、コンピュータが無人でロック解除される危険性があるためです。 誰もがそのコンピュータに近づき、その開いたSSH接続を悪用することができます。 たとえば、passwdコマンドを使用して、パスワードを変更します。 したがって、サーバーへのアクセスを得る。 言い換えれば、そのKEEP SSH connection aliveオプションを有効にする前に、最善の判断と優れたセキュリティ慣行を使用することをお勧めします。

Debian7の場合。X server

SSH接続を維持するための手順。 SSHサーバーで/etc/ssh/sshd_configファイルを編集し、そのファイルの下部に以下を追加します。

# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.ClientAliveInterval 300 # Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.ClientAliveCountMax 3333

rootユーザーとしてSSHサービスを再起動します:

service sshd restart

最近のDebianシステム(例えば、Wheezy7ではNovの現在の更新があります。 2015)では、上記のコマンドは動作しなくなり、エラーを返します:

sudo service sshd restartsshd: unrecognized service

しかし、次のような動作をします:

sudo service ssh restart Restarting OpenBSD Secure Shell server: sshd.

も参照してください

  • vt100/ANSIの末端の模範化のスクリーン末端の多重交換装置

  • tmux-代替端末マルチプレクサ

CategoryNetwork CategorySoftware

コメントを残す

メールアドレスが公開されることはありません。