UbuntuデスクトップでSSHを有効にする場合 、次のコマンドを使用します。
sudo apt install openssh-client
UbuntuサーバーでSSHを有効にする場合 、次のコマンドを使用します。
sudo apt install openssh-server
詳細については、記事の残りの部分をお読みください。
すべてのシステム管理者と開発者は、より迅速な管理とデバッグの目的で、システムへのリモートログインの必要性を経験しています。
IT環境では、最近のほとんどすべてのsysadminタスクはリモートログインを介して実行されます。
また、システム管理者だけでなく、通常のユーザーでもサーバーにリモートログインする必要がある場合があります。
では、どのようにしてLinuxシステムにリモート接続しますか?リモートログインに使用できるツールは複数ありますが、Linuxに関しては、SSHが最も一般的な選択肢です。
SSHは、セキュアシェルの略で、あるコンピューターから別のコンピューターへのリモートログインを安全に行うためのプロトコルです。
ここで問題となるのは、Ubuntu、Debian、または使用している他のLinuxディストリビューションでSSHをどのように有効にするかです。
SSHは単なるプロトコルであり、このプロトコルはlsh、Dropbearなどの多くのツールを介して実装できますが、SSHで最も広く使用されているツールはオープンソースソフトウェアOpenSSHです。
このチュートリアルでは、OpenSSHをインストールし、UbuntuおよびDebianベースのLinuxディストリビューションでSSHを有効にするように構成する方法を説明します。上記の手順は、Ubuntu/Debianのデスクトップバージョンとサーバーバージョンの両方に適用できます。
また、SSHの基本を理解するために、この記事を読むことをお勧めします。
UbuntuおよびDebianでOpenSSHを使用してSSHを有効にする
前述したように、OpenSSHはSSHログインを行うためのソフトウェアです。ポートをリッスンし、着信ユーザーを認証して、リモートユーザー用の新しいシェルを作成します。
SSHが機能するには、ユーザーがログインする必要のあるリモートシステムでsshサーバーが実行されている必要があります。また、ユーザーがリモートシステムにログインするローカルシステムにsshクライアントが必要です。
OpenSSHは、これらの機能の両方を提供します。エンドユーザー用のopenssh-clientとリモートサーバー用のopenssh-serverがあります。
OpenSSHをインストールする前に、SSHがシステムにすでにインストールされ実行されているかどうかを確認する必要があります。
SSHがすでに有効になっていて実行されているかどうかを確認します
システムでSSHがすでに有効になっている可能性が高くなります。確認するには、リモートサーバーまたはエンドユーザーシステムのいずれかで次のコマンドを実行します。
ps -aux | grep ssh
SSHが有効になっている場合は、デスクトップにSSHエージェントに関する情報が表示されます。
ps -aux | grep ssh
abhishek 1736 0.0 0.0 11304 36 ? Ss 08:18 0:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
abhishek 10462 0.0 0.0 21536 1044 pts/0 S+ 10:15 0:00 grep --color=auto ssh
サーバー上で、実行中のSSHデーモンに関する情報が表示されます。
ps -aux | grep ssh
root 920 0.0 0.2 72296 6028 ? Ss 2018 0:17 /usr/sbin/sshd -D
root 22708 0.0 0.3 108172 7364 ? Ss 05:13 0:00 sshd: [email protected]/0
root 22873 0.0 0.0 14856 1068 pts/0 S+ 05:14 0:00 grep --color=auto ssh
上記のような出力が表示されない場合は、システムでSSHが実行されていません。 OpenSSHをインストールする時が来ました。
UbuntuおよびDebianへのOpenSSHのインストール
OpenSSHのインストールに進む前に、openssh-clientとopenssh-serverについて簡単に説明します。
openssh-client: これは、SSHを使用してリモートLinuxシステムに接続する場合に必要なパッケージです。これは、エンドユーザー/デスクトップユーザーとして必要なものです。
openssh-server: これは、SSH経由でシステムにリモートログインできるようにする場合に必要なパッケージです。これは、Linuxサーバーに必要なものです。
openssh-serverをインストールすると、SSH経由で他のシステムにリモートログインすることもできることに注意してください。つまり、openssh-serverはopenssh-clientで構成されます。ただし、Linuxデスクトップを使用しているエンドユーザーの場合は、(ほとんどの場合)openssh-serverをインストールして、システムへのリモートログインを許可する必要はありません。
2つの違いがわかったので、次はそれらのインストール方法を確認します。
UbuntuまたはDebianにOpenSSHをインストールするには、sudo/root権限が必要であることに注意してください。そのような権限がない場合は、システム管理者に連絡してください。 sudoユーザーの作成に関するこの記事も読むことができます。
SSH経由で他のリモートシステムに接続するだけの場合は、次のコマンドを使用してopenssh-clientパッケージをインストールする必要があります。
sudo apt update
sudo apt install openssh-client
システムにsshをインストールすると、それを使用できるようになります。 SSHの使用方法については、この詳細な記事を参照してください。
Ubuntu / Debianサーバーをセットアップする場合は、openssh-serverパッケージをインストールして、他のリモートユーザーがシステムに接続できるようにする必要があります。
sudo apt update
sudo apt install openssh-server
openssh-serverをインストールしたら、それを微調整して必要に応じて構成する方法を学びましょう。
SSHデーモンsshdの制御(サーバー用)
sshdという名前のSSHデーモンがあります インストールされ、デフォルトで自動的に再起動時に開始できるようになっています。 systemctlは、SSHデーモンを制御するいくつかの方法の1つです。 systemctlについて詳しく知る 、この記事を参照してください。
sshdサービスを開始します
以下を発行するだけでサービスを開始できます:
sudo systemctl start sshd
sshdサービスを停止します
同様の方法でサービスを停止できます:
sudo systemctl stop sshd
sshdサービスを再開します
sshdサービスを停止して開始する場合(通常、構成をsshdサービスに変更する場合に必要)、次のコマンドを使用できます。
sudo systemctl restart sshd
一部のサービスは、手動による操作を回避するため、および非常に頻繁に使用される場合は、再起動時に開始する必要があります。サーバー内のApache、mongod、mysqld、sshdなどのサービスには非常に重要です。
sshdでこのような自動起動を有効にする場合は、次を使用します。
sudo systemctl enable sshd
再起動時にsshdが自動的に開始されないようにする場合は、
を使用します。sudo systemctl disable sshd
上記の4つのヒントは、ポートの変更など、sshサービスに変更を加えるたびに必要です。上記のコマンドを使用して、サービス名sshdをターゲットサービスに置き換えたサービス(mysqld、mongod、apacheなど)を管理できます。
ヒント :nohupコマンドを使用すると、SSH接続が切断された場合でもコマンドを実行し続けることができます。
SSHの構成(サーバー用)
現在のところ、sshサービスはポート22でリッスンしており、キーが保存されると、任意のユーザー(ルートも)を認証する準備が整います。
接続をリッスンするポートなどの構成を変更する場合は、ファイル「 / etc / ssh / sshd_config 」を編集できます。 」行を追加、削除、コメント、またはコメント解除してから、sshdサービスを再起動します。
構成するオプションはたくさんあります。必要になる可能性が最も高い構成のリストを作成しました。
1。デフォルトのSSHポートを変更する
通常、sshdサービスはTCPポート22でリッスンします。必要に応じて、/ etc / ssh / ssh_configに次の行を追加/編集することで、SSHポートを5678に変更できます。
Port 5678
サービスを再起動して、変更をすぐに確認してください。
2。 SSH経由のルートログインを無効にする
ルートユーザーにsshによる認証を許可することは、セキュリティ上の理由からお勧めできません。 sudo ユーザーはリモートでログインできますが、ルートにはログインできません ルートとして セキュリティフードチェーンのトップにいます。
ルートログインを無効にするには、次の行を追加して(まだ存在しない場合)、サービスを再起動します。
PermitRootLogin no
行がすでに存在する場合は、コメントアウトされていないことを確認してください。
3。 SSHキーベースの認証を許可する
エンドユーザーが常にパスワードを入力する必要がないように、sshキーベースの認証を許可することをお勧めします。リモートシステムにログインするには、[email protected]を使用するだけで十分です。
このためには、公開鍵認証を許可するようにSSHを構成する必要があります。
PubkeyAuthentication yes
行がすでに存在する場合は、コメントアウトされていないことを確認してください。
ここで、特定のシステムが公開鍵を介してログインできるようにする場合は、エンドユーザーの公開鍵をファイル .ssh / authorized_keysに追加する必要があります。 。
ssh-keygen を使用して、sshキー(公開キーと秘密キー)を作成できます。 。 key-genの詳細については、このすばらしいリソースを参照してください。
エンドユーザーの公開鍵は、任意の方法でリモートサーバーに転送できます。必要に応じてscpコマンドを使用するか、FTP経由で取得することができます。本当にあなた次第です。
上記の3つが最も必要ですが、さらに変更する場合は、 sshd_configのマンページを参照してください。 。
結論
これは、Ubuntu / DebianでSSHを有効にする方法と、リモートログイン用にサーバーでSSHを構成する方法を知るのに十分な資料だと思います。
関連記事では、システム間で公開鍵をコピーすることによって発生するSSHエラーの詳細についてこの記事を参照できます。
この記事が役に立ったら、友達と共有してください。何か提案やコメントがある場合、または私が何かを見逃したと思う場合は、下にコメントをドロップしてください。