実現したいこと:VPSサーバからWindows PCにsshでアクセスをできるようにして、ローカルにバックアップを取りたい。
駆け出しインフラエンジニアの備忘録です。
▷情報処理所持資格[基本情報技術者][情報セキュリティマネジメント]
▷情報処理所持資格[基本情報技術者][情報セキュリティマネジメント]
関連記事
・30代で転職活動をしている。・未経験でエンジニアを目指している。 シャチ 前職の[建設業の施工管理]から、インフラエンジニアになりました。 ・30代からの未経験エンジニアは、インフラエンジニアがおすすめって本当な[…]
【苦労した箇所】
✔️Power shell側の”authorized_keys”ファイルの権限変更。
✔Windows Defenderの設定。
✔️WiFi ルーターのフィルタリング・ポートフォワーディング
✔️Power shell側の”authorized_keys”ファイルの権限変更。
✔Windows Defenderの設定。
✔️WiFi ルーターのフィルタリング・ポートフォワーディング
目次
Windows(Power shell)からVPSサーバにアクセスする
VPS(centos7)
・Open SSH serverの設定”sshd_config”変更。
Port番号は任意の番号を指定。
cd /etc/ssh/ cp -p sshd_config sshd_config.bk #設定ファイルのbackup vi sshd_config -- 設定変更 -- 17 Port 10022 #Portをdefault"22"から変更 38 PermitRootLogin no #Root Loginを許可しない 43 PubkeyAuthentication yes #公開鍵認証方式を許可 65 PasswordAuthentication no #Password認証を許可しない
・Open SSH serverをrestartし、設定を反映させる。
systemctl restart sshd #Open SSH serverの開始 systemctl status sshd #Open SSH serverが正常に起動したか確認
・firewall public ruleにssh service許可設定を追加。
firewall-cmd --add-service=ssh firewall-cmd --reload firewall-cmd --list-service #sshが許可されていることを確認
・”~./ssh”フォルダの権限を変更し、”~./ssh”配下に”authorized_keys”ファイルの作成、権限変更。
chmod 700 ~/.ssh/ cd ~/.ssh/ touch authorized_keys chmod 600 authorized_keys
“authorized_keys”ファイルに、後ほど作成するPower shell側の公開鍵をコピー。
Power shell
・公開鍵と秘密鍵の作成。
cd C:\Users\User\.ssh\ ssh-keygen -t rsa
・”~./ssh”配下に作成した公開鍵を表示。
cat .\.ssh\id_rsa.pub
ここで、VPS側の”authorized_keys”ファイルに、表示したPower shellの”id_rsa.pub”をコピー。
・sshでVPS サーバへアクセス。
ssh -p 10022 "user-name"@"VPS IP Address"
VPSサーバから Windows(Power shell)にアクセスする
Power shell
・Open SSH serverのインストール。
Power shell側でのインストールもできるようですが、今回はGUIでインストール。
- 設定 > アプリ
- オプション機能 > 機能の追加
- Open SSH serverをインストール
・Open SSH serverの起動。
- コントロールパネル > システムとセキュリティ > 管理ツール > サービス
- Open SSH serverの[サービスの開始]をクリック
・管理者権限でPower shellを起動。
start-process powershell.exe -verb runas
・Open SSH serverの設定”sshd_config”変更。
net stop sshd #Open SSH server停止 cd .\ProgramData\ssh\ copy .\sshd_config .\sshd_config.bak #設定ファイルのbackup notepad .\sshd_config --設定変更-- 9 Port 10022 14 HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key #ホスト認証に用いる秘密鍵のパスを指定 16 HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key 17 HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key 31 PermitRootLogin no 36 PubkeyAuthentication yes 54 PasswordAuthentication no ------------ net start sshd #Open SSH server開始
・Firewall ruleにssh service許可設定を追加。
- 検索窓に”firewall”と入力し、Windows Defender ファイアウォールを開く。
- 受信の規則 > 新しい規則
- 規則の種類 :ポート
プロトコルおよびポート:TCP/10022
操作 :接続を許可する
プロファイル :ドメイン/プライベート/パブリック
名前 :任意の名前を入力
・”~./ssh”配下に”authorized_keys”ファイルを作成。
cd C:\Users\User\.ssh\ New-Item authorized_keys
・”authorized_keys”ファイルの権限を確認。
icacls authorized_keys #authorized_keysファイルの権限を確認。 --以下へ変更にてsshアクセス可能になった-- SYSTEM:(F) Administractors:(RX) User:(F)
・”authorized_keys”ファイルの権限を変更。
この権限変更がうまくいかず時間がかかった。
- GUIで”C:\Users\User\.ssh”へ移動。
- authorized_keysの[プロパティ > セキュリティ > 詳細設定]をクリック
- Administratorsを選択し、[継承の解除]をクリック
- [編集]をクリックし、「読み取りと実行・読み取り」に✔を入れ[OK]をクリック
- 最後に[適用]をクリック
VPS(centos7)
・公開鍵と秘密鍵の作成。
ssh-keygen -t rsa
・”~./ssh”配下に作成した公開鍵を表示、Power shell側の”authorized_keys”ファイルへコピー。
cat .ssh/id_rsa.pub
WiFiルーター
Global(WAN)側からLocal(LAN)側へのアクセスがルーターで許可されていないので、フィルタリングとポートフォワーディングの設定を追加する。
IPv4フィルタリング
- 種別:通過
- 方向:in
- プロトコル:TCP
- 送信元:VPSのGlobal IP Address
- 送信元ポート:any
- 宛先:WiFiルーターのGlobal IP Address
- 宛先ポート:10022
ポートフォワーディング
- LAN側のホスト:Windows PCのLocal IP Address
- プロトコル:TCP
- ポート番号:10022
許可するプロトコルやポートに迷ったら、「tcpdump」や「wireshark」でパケットを確認する。
・sshでPower shellへアクセス。
ssh -p 10022 "user-name"@"WiFi_RT Global IP Address"
まとめ:【備忘録】VPSサーバからWindows(Open SSH)サーバへsshする方法
<<簡単な流れ>>
■両サーバで公開鍵・秘密鍵を作成。
■接続先のサーバに接続元の公開鍵を登録。
■“authorized_keys”ファイルの権限を変更。
■両サーバで公開鍵・秘密鍵を作成。
■接続先のサーバに接続元の公開鍵を登録。
■“authorized_keys”ファイルの権限を変更。
POINT
- Firewallの設定
- WiFiルーターの設定
- Stepごとの接続状態確認
FirewallやWiFiルーターの設定を変更したら、下記コマンドで接続確認をしてどこまでステータスが進んでいるか確認する。
traceroute(tracert) "IP Address" nc -vz "IP Address" "Port Number"
不足している部分やセキュリティ上の推奨箇所ありましたらアドバイスお願いします。