Linuxの最も魅力的な機能の1つは、キーボードにコマンドを入力するだけでコンピューターを巧みに使用できることです。さらに、世界中のコンピューターでそれを実行できることです。 OpenSSHのおかげで、POSIXユーザーは、リモートの場所からアクセスして使用する権限を持つ任意のコンピューターでセキュアシェルを開くことができます。これは多くのLinuxユーザーにとって日常的な作業ですが、まだ試したことがない人にとっては混乱を招く可能性があります。この記事では、2台のコンピューターをセキュアシェル(SSH)接続用に構成する方法と、パスワードなしで一方から他方に安全に接続する方法について説明します。
複数のコンピューターについて話し合う場合、一方を他方から識別するのは混乱を招く可能性があります。 ITコミュニティには、コンピュータをネットワーク化するプロセスの説明を明確にするのに役立つ確立された用語があります。
- サービス: サービスはバックグラウンドで実行されるソフトウェアであるため、インストールされているコンピューター以外のコンピューターでも使用できます。たとえば、ウェブサーバーはウェブ共有サービスをホストします 。この用語は、グラフィカルインターフェイスのないソフトウェアであることを意味します(ただし、主張するものではありません)。
- ホスト: ホストは任意のコンピューターです。 ITでは、コンピューターはホストと呼ばれます 技術的には、どのコンピューターでも他のコンピューターに役立つアプリケーションをホストできるからです。ラップトップを「ホスト」とは思わないかもしれませんが、自分、携帯電話、またはその他のコンピュータに役立つサービスを実行している可能性があります。
- ローカル: ローカルコンピューターは、ユーザーまたは一部のソフトウェアが使用しているコンピューターです。すべてのコンピューターは、それ自体を
localhost
と呼びます。 、たとえば。 - リモート: リモートコンピューターとは、物理的に目の前にいない、または物理的に使用していないコンピューターのことです。 リモートにあるコンピューターです 場所。
用語が決まったので、始めることができます。
2台のコンピューターをSSH経由で接続するには、各ホストにSSHがインストールされている必要があります。 SSHには、接続を開始するためにローカルマシンで使用するコマンドとサーバーの2つのコンポーネントがあります。 着信接続要求を受け入れます。一部のコンピューターには、SSHの一方または両方の部分がすでにインストールされています。コマンドはシステムによって異なり、コマンドとサーバーの両方がインストールされているかどうかを確認するため、最も簡単な方法は、関連する構成ファイルを探すことです。
$ file /etc/ssh/ssh_config
/etc/ssh/ssh_config: ASCII text
これがNo such file or directory
を返す場合 エラーの場合、SSHコマンドがインストールされていません。
SSHサービスについても同様のチェックを行います(d
に注意してください) ファイル名内):
$ file /etc/ssh/sshd_config
/etc/ssh/sshd_config: ASCII text
必要に応じて、どちらか一方をインストールします。
$ sudo dnf install openssh-clients openssh-server
リモートコンピューターで、systemdを使用してSSHサービスを有効にします:
$ sudo systemctl enable --now sshd
または、システム設定内からSSHサービスを有効にすることもできます GNOMEまたはシステム環境設定 macOSで。 GNOMEデスクトップでは、共有にあります パネル:
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
リモートコンピューターにSSHをインストールして有効にしたので、テストとしてパスワードを使用してログインしてみることができます。リモートコンピューターにアクセスするには、ユーザーアカウントとパスワードが必要です。
リモートユーザーは、ローカルユーザーと同じである必要はありません。そのユーザーのパスワードを持っている限り、リモートマシン上の任意のユーザーとしてログインできます。たとえば、私はsethkenlon
です 仕事用のコンピューターでは、seth
です 私のパソコンで。私が自分のパーソナルコンピュータを使用していて(現在のローカルマシンにしている)、仕事用のコンピュータにSSHで接続したい場合は、自分をsethkenlon
として識別することでそれを行うことができます。 仕事用のパスワードを使用します。
リモートコンピューターにSSHで接続するには、インターネットプロトコル(IP)アドレスまたは解決可能なホスト名を知っている必要があります。リモートマシンのIPアドレスを見つけるには、ip
を使用します コマンド(リモートコンピューター上):
$ ip addr show | grep "inet "
inet 127.0.0.1/8 scope host lo
inet 10.1.1.5/27 brd 10.1.1.31 [...]
リモートコンピュータにip
がない場合 コマンド、ifconfig
を試してください 代わりに(またはipconfig
Windowsの場合)。
アドレス127.0.0.1は特別なアドレスであり、実際にはlocalhost
のアドレスです。 。これは「ループバック」アドレスであり、システムがそれ自体に到達するために使用します。これは、リモートマシンにログインする場合には役に立ちません。したがって、この例では、リモートコンピューターの正しいIPアドレスは10.1.1.5です。実生活では、私のローカルネットワークは10.1.1.0サブネットを使用しているので、私はそれを知っているでしょう。リモートコンピューターが別のネットワーク上にある場合、IPアドレスはほぼ何でもかまいません(ただし、127.0.0.1ではありません)。さまざまなファイアウォールを介してリモートコンピューターに到達するには、おそらく特別なルーティングが必要です。リモートコンピュータが同じネットワーク上にあると仮定しますが、自分のネットワークよりも離れた場所にあるコンピュータにアクセスしたい場合は、ファイアウォールでポートを開くことに関する私の記事を読んでください。
IPアドレスまたはでリモートマシンにpingを実行できる場合 そのホスト名とログインアカウントがあれば、SSHで接続できます:
$ ping -c1 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
$ ping -c1 akiton.local
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
それは成功です。 SSHを使用してログインします:
$ whoami
seth
$ ssh [email protected]
bash$ whoami
sethkenlon
テストログインが機能するので、パスワードなしのログインをアクティブ化する準備が整いました。
SSHキーを作成する
パスワードなしで別のコンピューターに安全にログインするには、SSHキーが必要です。すでにSSHキーを持っているかもしれませんが、新しいものを作成しても問題はありません。 SSHキーは、ローカルマシンで有効になります。これは2つのコンポーネントで構成されています。1つは誰とも共有しない秘密鍵で、もう1つはパスワードなしでアクセスしたいリモートマシンにコピーする公開鍵です。
1つのSSHキーを作成し、リモートログインからGitLab認証まですべてに使用する人もいます。ただし、タスクのグループごとに異なるキーを使用します。たとえば、自宅で1つのキーを使用してローカルマシンを認証し、別のキーを使用して管理しているWebサーバーを認証し、別のキーをGitホスト用に、別のキーをホストしているGitリポジトリ用に使用します。この例では、ローカルエリアネットワーク内のコンピューターで使用する一意のキーを作成します。
新しいSSHキーを作成するには、ssh-keygen
を使用します コマンド:
$ ssh-keygen -t ed25519 -f ~/.ssh/lan
-t
オプションはtypeの略です キーに使用される暗号化がデフォルトよりも高いことを確認します。 -f
オプションはファイルの略です キーのファイル名と場所を設定します。 SSHキーのパスワードを作成するように求められます。キーのパスワードを作成する必要があります。つまり、キーを使用するときにパスワードを入力する必要がありますが、そのパスワードはローカルのままであり、ネットワークを介して送信されません。このコマンドを実行すると、lan
というSSH秘密鍵が残ります。 およびlan.pub
と呼ばれるSSH公開鍵 。
公開鍵をリモートマシンに渡すには、ssh-copy-id
を使用します 。これを機能させるには、リモートマシンにSSHアクセスできることを確認する必要があります。パスワードを使用してリモートホストにログインできない場合は、パスワードなしのログインも設定できません。
$ ssh-copy-id -i ~/.ssh/lan.pub [email protected]
このプロセス中に、リモートホストでのログインパスワードの入力を求められます。
成功したら、もう一度ログインしてみてください。ただし、今回は-i
を使用します。 SSHコマンドを適切なキー(lan
)にポイントするオプション 、この例では):
$ ssh -i ~/.ssh/lan [email protected]
bash$ whoami
sethkenlon
ネットワーク上のすべてのコンピューターに対してこのプロセスを繰り返すと、パスワードについて二度と考えることなく、各ホストをさまようことができます。実際、パスワードなしの認証を設定したら、/etc/ssh/sshd_config
を編集できます。 パスワード認証を禁止するファイル。これにより、秘密鍵を持っていない限り、SSHを使用してコンピューターへの認証を行うことができなくなります。これを行うには、/etc/ssh/sshd_config
を開きます sudo
を使用したテキストエディタで 権限と文字列PasswordAuthentication
の検索 。デフォルトの行を次のように変更します:
PasswordAuthentication no
保存してSSHサーバーを再起動します(または単に再起動します):
$ sudo systemctl restart sshd && echo "OK"
OK
$
SSHを毎日使用する
OpenSSHは、コンピューティングの見方を変えます。目の前のコンピューターだけに縛られることはもうありません。 SSHを使用すると、家の中の任意のコンピューター、アカウントを持っているサーバー、さらにはモバイルデバイスやモノのインターネットデバイスにアクセスできます。 SSHの電源をロック解除すると、Linuxターミナルの電源もロック解除されます。 SSHを毎日使用していない場合は、今すぐ開始してください。それに慣れ、いくつかの鍵を集め、より安全に暮らし、世界を広げましょう。