セキュアシェルプロトコル(SSH)は、Linuxの世界でコマンドラインを介してリモートマシンを制御するための最も一般的な方法です。 SSHは真のLinuxオリジナルであり、Windowsの世界でも人気を集めています。 OpenSSHを使用したWindowsマシンの制御をカバーするSSHの公式Windowsドキュメントもあります。
この記事では、人気のあるオープンソースツールPuTTYを使用して、WindowsマシンからFedora33LinuxシステムへのSSH接続を確立する方法について説明します。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
SSHは、SSHクライアントがSSHサーバーへの接続を確立するクライアントサーバーアーキテクチャを使用します。 SSHサーバーは通常、システムデーモンとして実行されているため、SSHDと呼ばれることがよくあります。 SSHデーモンが付属していないLinuxディストリビューションはほとんど見つかりません。 Fedora 33では、SSHデーモンがインストールされていますが、アクティブ化されていません。
SSHを使用して、仮想マシンとして実行されているか、ネットワーク上の物理デバイスとして実行されているかに関係なく、ほぼすべてのLinuxマシンを制御できます。一般的な使用例は、RaspberryPiを含む組み込みデバイスのヘッドレス構成です。 SSHは、他のネットワークサービスをトンネリングするためにも使用できます。 SSHトラフィックは暗号化されているため、デフォルトで暗号化を提供しないプロトコルのトランスポート層としてSSHを使用できます。
この記事では、SSHを使用する4つの方法について説明します。1。Linux側でSSHデーモンを構成する方法、2。リモートコンソール接続を設定する方法、3。ネットワーク経由でファイルをコピーする方法、4 。SSHを介して特定のプロトコルをトンネリングする方法。
1。 SSHDを構成する
Linuxシステム(私の場合はFedora 33)は、PuTTYSSHクライアントが接続できるようにするSSHサーバーとして機能します。まず、デーモンのSSH構成を確認します。構成ファイルは/etc/ssh/sshd_config
にあります。 関連する行をコメントアウトすることでアクティブにできるスイッチがたくさん含まれています:
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
この例では、コメント化されていない行がないデフォルトの構成が機能するはずです。 systemctl status sshd
と入力して、SSHデーモンがすでに実行されているかどうかを確認します。 :
$ systemctl status sshd>
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 577 (sshd)
Tasks: 1 (limit: 26213)
CGroup: /system.slice/sshd.service
└─577 /usr/sbin/sshd -D [email protected],chacha20-[...]
非アクティブな場合は、systemctl start sshd
で開始します コマンド。
2。リモートコンソールを設定する
Windowsでは、PuTTYインストーラーをダウンロードし、インストールして開きます。次のようなウィンドウが表示されます:
ホスト名(またはIPアドレス) 入力フィールドに、Linuxシステムの接続情報を入力します。この例では、IPアドレス192.168.1.60
でシステムに接続するために使用できるブリッジネットワークアダプターを使用してFedora33仮想マシンをセットアップしました。 。 開くをクリックします 、および次のようなウィンドウが開きます:
これは、man-in-the-middle攻撃を防ぐためのSSHセキュリティメカニズムです。メッセージ内のフィンガープリントは、/etc/ssh/ssh_host_ed25519_key.pub.
。 PuTTYは、キーをMD5ハッシュとして出力します。信頼性を確認するには、Linuxシステムに切り替え、コマンドシェルを開いて、次のように入力します。
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
出力は、PuTTYによって示されるフィンガープリントと一致する必要があります:
$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519)
はいをクリックして、PuTTYセキュリティアラートを確認します 。ホストシステムのフィンガープリントは、Windowsレジストリの次の場所にあるPuTTYs信頼リストに含まれています。
HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys
正しいログイン資格情報を入力すると、ホームディレクトリのコンソールが表示されます。
3。ネットワーク経由でファイルをコピーする
リモートコンソールに加えて、PuTTYを使用してSSH経由でファイルを転送できます。 C:\\Program Files (x86)\\PuTTY
の下のインストールフォルダを確認します pscp.exe
を見つけます 。これを使用して、Linuxシステムとの間でファイルをコピーできます。
Windows + Rでコマンドプロンプトを開きます cmdと入力します 。ファイルMyFile.txt
をコピーします LinuxユーザーのホームディレクトリからWindowsのホームディレクトリに次のように入力します。
C:\"Program Files (x86)"\PuTTY\pscp.exe [email protected]:/home/stephan/MyFile.txt .
WindowsホームディレクトリからLinuxユーザーホームディレクトリにファイルをコピーするには、次のように入力します。
C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt [email protected]:/home/stephan/
すでに理解しているかもしれませんが、コピーコマンドの一般的な構造は次のとおりです。
pscp.exe <source> <target>
4。プロトコルをトンネリングする
任意のアプリケーション用にHTTPベースのサービスを実行しているLinuxマシンがあるとします。インターネットを介してWindowsマシンからこのHTTPサービスにアクセスしたいとします。もちろん、関連するTCPポートを公開することはできません。理由は次のとおりです。
- サーバーはHTTPSではなくHTTPを実行しています
- ユーザー管理もログインもまったくありません
一見すると、恐ろしいセキュリティ上の欠陥を発生させずにこのアーキテクチャをセットアップすることは不可能な作業のように見えます。ただし、SSHを使用すると、このシナリオの安全なソリューションを比較的簡単に設定できます。
この手順をソフトウェアプロジェクトPythonicでデモンストレーションします。コンテナとして実行されるPythonicは、TCPポート7000(メインエディタ)とTCPポート8000(コードサーバーソースコードエディタ)の2つのTCPポートを公開します。
LinuxマシンにPythonicをインストールするには、次のコマンドを実行します。
podman pull pythonicautomation/pythonic
podman run -d -p 7000:7000 -p 8000:8000 pythonic
Windowsマシンに切り替え、PuTTYを開き、接続->SSH->トンネルに移動します 。転送する2つのTCPポートを追加します:
- 出典:
7000
/宛先:localhost:7000
- ソース:
8000
/宛先:localhost:8000
次に、セッションに戻ります セクションを開き、前と同じようにSSH接続を確立します。ブラウザを開き、http://localhost:7000
に移動します;次のような画面が表示されます:
ポートフォワーディングが正常に構成されました!
警告 :TCPポート22を公開する場合は、推測しやすいログイン資格情報を使用しないでください。共通の標準的なクレデンシャルを使用してLinuxマシンにアクセスしようとすると、世界中からログインが試行されます。代わりに、既知のクライアントのみにログインを許可します。このログイン制限は、公開鍵がSSHホストマシンに保存され、秘密鍵がクライアントに残る鍵ペアを使用する公開鍵暗号化を使用して実現できます。
Linuxマシンへの接続に苦労している場合は、SSHデーモンのプロセスを次のように実行できます。
journalctl -f -u sshd
LogLevel DEBUGを使用した場合の通常のログインプロセスは次のようになります:
この記事では、SSHの使用方法についてほとんど触れていません。特定のユースケースに関する情報を探している場合は、インターネット上の多数のSSHチュートリアルの中でおそらく見つけることができます。 PuTTYは、構成が簡単で、オペレーティングシステム間の相互運用性が優れているため、接続ソリューション用のスイスアーミーナイフツールであるため、仕事で頻繁に使用しています。