wet-to-dry’s blog

京大大学院生の備忘録ブログ

研究室のPCにSSH接続する話2

目次

概要

以前の話

wet-to-dry.hatenablog.com

前回はサーバーPCからサーバーPCに向けてSSH接続をしましたが、今回はクライアントPCからサーバーPCに向けてSSH接続を試みます。

やったこと

京大のネットワークはKUINSと呼ばれており、学外公開に対応しているKUINS-IIと学外公開が難しいKUINS-IIIの二種類があります。

www.iimc.kyoto-u.ac.jp

KUINS-IIの場合はおそらくSSH接続ではポートフォワーディングが必要です(確証はないです)。

www.iimc.kyoto-u.ac.jp

www.ketsuago.com

KUINS-IIIの場合は、IKEv2と呼ばれるVPN接続をすればいけるらしいです(これは研究室のネットワーク管理者が、KUINS管理者にVPN接続したい人のESC-IDを申請しないとできません)。

www.iimc.kyoto-u.ac.jp

僕の研究室はKUINS-IIIなので、VPN接続でまずラボのLANに入り、そこからsshを飛ばすことになりそうです。

やらなければいけないのは以下の通り。

  1. ネットワーク管理者VPN接続申請をしてもらう

  2. VPN接続設定

0. Windows PowerShell の文字化けについて

前回、sshをするとWindows PowerShell内で文字化けが発生してしまう問題がありました。

ネットには文字コードを変更しろだの色々書いてありましたが、そもそもWindowsSSH serverを使っている人が少なく、うまい解決策は乗っていませんでした。

しかし、一応の打開策(?)は見つかりました。

Windows PowerShellをデフォルトのアプリで開くのではなく、VSCodeアプリで開く

です。

根本的な解決策にはなっていませんが、PowerShellのアプリがダメダメだったってことですかね。。。

VSCodeのインストール、設定は以前まとめました。

wet-to-dry.hatenablog.com

VSCodeを立ち上げ、

ターミナル→新しいターミナル

で下部分にターミナルコンソールが出てくると思いますので、ここからPowerShellアプリと同じように操作しましょう。

1. ネットワーク管理者VPN接続申請をしてもらう

あまり書くことはないですが、ラボのネットワーク管理者(たぶん教授)に「VPN接続をしたいので申請していただけますか?」といえば伝わると思います。

新型コロナが猛威を振るうこのご時世ですので、ダメとは言われないと思います。

やり方は

  1. まずhttps://db.kuins.kyoto-u.ac.jp/にSPS-IDでログインしてもらう。

  2. 一番下の「変更を申請する」(?)をクリック

  3. 「KUINS-AirVPNでの接続を許可するID」の部分の横の「+」ボタンを押し、自分のECS-IDを入力してもらったあと、一番下の「申請する」(?)をクリック

  4. この時に、「VLAN管理番号」も教えてもらいましょう。この番号がVPN接続に必要です。

でいけるはずです。

ボスにやってもらったのでうろ覚えですが、そんなに難しい作業ではなかったです。

2. VPN接続設定

申請した翌日くらいに外部接続したいPCでVPN接続設定を行います(僕の場合はその日の夕方には使えた)。

このリンクのマニュアルを読みながらやりましょう↓

www.iimc.kyoto-u.ac.jp

僕はwindowsですが、そんなに難しくなかったです。

設定ができると、

f:id:wet-to-dry:20200410164834p:plain

こんな感じでタスクバー内のwifiアイコンからVPNが選べるようになります(ikev-North-VPNが今回設定したVPNです)。

ログインIDは「ECS-ID@VLAN管理番号」、パスワードはECS-IDのパスワードです。

VPN接続を行うと、Windows PowerShell

ping 10.226.122.1(サーバーPCのIPv4アドレス)

# 以下結果
10.226.122.1 に ping を送信しています 32 バイトのデータ:
10.226.122.1 からの応答: バイト数 =32 時間 =3ms TTL=128
10.226.122.1 からの応答: バイト数 =32 時間 <1ms TTL=128
10.226.122.1 からの応答: バイト数 =32 時間 <1ms TTL=128
10.226.122.1 からの応答: バイト数 =32 時間 <1ms TTL=128

10.226.122.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 3ms、平均 = 0ms

で外部からでもサーバーPCにコネクトできる準備が整っていることがわかります。

ちなみにコネクトできていないときは、

ping 10.226.122.0

10.226.122.22 からの応答: 宛先ホストに到達できません。
10.226.122.22 からの応答: 宛先ホストに到達できません。
10.226.122.22 からの応答: 宛先ホストに到達できません。
10.226.122.22 からの応答: 宛先ホストに到達できません。

10.226.122.0 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)

みたいな感じになります。


一応、sshで接続できるかどうかも確認しておきます。

ssh 10.226.122.1(サーバーPCのIPv4アドレス)

で、

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\ユーザー名>

とコンソールが出てくればOKです。

exit

sshサーバーから出ることができます。

あとがき

毎回パスワードを打つのが面倒くさかったのでSSH鍵認証を導入したかったのですが、難しくて諦めました。

なにが難しいかというと、

  1. Windows OpenSSH Serverの公開鍵登録ディレクトリがどこかわからない(一応ホームディレクトリ/.sshらしい)

  2. SSH初心者なので、公開鍵、秘密鍵の正しいpermissionがわからない

  3. windowsでのpermissionの変更の仕方がわからない

です。

Linuxの記事は色々出てくるのですが、windowsはほとんどなかったし、少ない中で記事と同じ事やっても全然つながらない。

これはパスワード打った方が楽!ってなりました(笑)

まあ正直、リモートワークするにしてもSSH接続するのは解析用のUbuntu PCかなって思うので()、悔いは残りますが深追いはしないようにします。

次は画面共有かな~

追記(2020/10/09) 鍵認証

鍵認証ができたので、追記します。

まず、

$ ssh-keygen -t rsa #鍵作成
$ scp C:Users\*****\.ssh\id_rsa.pub *****@**.***.***.**:~/

二行目でWindowsの~/.sshに作成された公開鍵(id_rsa.pub)をリモートPC(Ubuntu)のホームディレクトリに送信しました。

scpコマンドはsshの回線を使ってファイルを送受信できるコマンドです。

*****@**.***.***.**sshで接続するリモートのアドレス。

で、

$ ssh *****@**.***.***.**

でリモートPCにssh接続して、

$ apt-get install openssh-server #openssh-serverを一応インストール
$ mkdir ~/.ssh
$ chmod 700 .ssh #おまじないでパーミッションを変更
$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ exit

これでいけるはず!

パスワード認証を拒否して鍵認証のみにするには、/etc/ssh/sshd_configを開いて

PasswordAuthentication no

を入力すればOKらしいですが、僕はしてません(研究室のローカルLAN内でそこまでセキュリティを気にしてないので)。

ここを参考にしました↓

qiita.com

qiita.com

追記(2020/10/12) sshのconfig

めんどくさがりの僕は

ssh *****@**.***.***.**

を打つのもめんどくさいので、sshのconfigファイルをいじってコマンドを短くしました。

~/.ssh/にファイル名「config」で

Host hoge #自分がsshの後に打ちたいコマンド(例でhoge)
HostName **.***.***.** #@マークの後に打つIPアドレス
User ***** #@マークの前に打つユーザー名
Port 22
IdentityFile C:\\Users\\*****\\.ssh\\id_rsa #sshの秘密鍵の場所

というファイルを作成。

ssh hoge

で簡単につなげるようになった。

参考記事↓

qiita.com

webkaru.net