目次
概要
以前の話
前回はサーバーPCからサーバーPCに向けてSSH接続をしましたが、今回はクライアントPCからサーバーPCに向けてSSH接続を試みます。
やったこと
京大のネットワークはKUINSと呼ばれており、学外公開に対応しているKUINS-IIと学外公開が難しいKUINS-IIIの二種類があります。
KUINS-IIの場合はおそらくSSH接続ではポートフォワーディングが必要です(確証はないです)。
KUINS-IIIの場合は、IKEv2と呼ばれるVPN接続をすればいけるらしいです(これは研究室のネットワーク管理者が、KUINS管理者にVPN接続したい人のESC-IDを申請しないとできません)。
僕の研究室はKUINS-IIIなので、VPN接続でまずラボのLANに入り、そこからsshを飛ばすことになりそうです。
やらなければいけないのは以下の通り。
0. Windows PowerShell の文字化けについて
前回、sshをするとWindows PowerShell内で文字化けが発生してしまう問題がありました。
ネットには文字コードを変更しろだの色々書いてありましたが、そもそもWindowsのSSH serverを使っている人が少なく、うまい解決策は乗っていませんでした。
しかし、一応の打開策(?)は見つかりました。
Windows PowerShellをデフォルトのアプリで開くのではなく、VSCodeアプリで開く
です。
根本的な解決策にはなっていませんが、PowerShellのアプリがダメダメだったってことですかね。。。
VSCodeのインストール、設定は以前まとめました。
VSCodeを立ち上げ、
ターミナル→新しいターミナル
で下部分にターミナルコンソールが出てくると思いますので、ここからPowerShellアプリと同じように操作しましょう。
1. ネットワーク管理者にVPN接続申請をしてもらう
あまり書くことはないですが、ラボのネットワーク管理者(たぶん教授)に「VPN接続をしたいので申請していただけますか?」といえば伝わると思います。
新型コロナが猛威を振るうこのご時世ですので、ダメとは言われないと思います。
やり方は
まずhttps://db.kuins.kyoto-u.ac.jp/にSPS-IDでログインしてもらう。
一番下の「変更を申請する」(?)をクリック
「KUINS-AirやVPNでの接続を許可するID」の部分の横の「+」ボタンを押し、自分のECS-IDを入力してもらったあと、一番下の「申請する」(?)をクリック
この時に、「VLAN管理番号」も教えてもらいましょう。この番号がVPN接続に必要です。
でいけるはずです。
ボスにやってもらったのでうろ覚えですが、そんなに難しい作業ではなかったです。
2. VPN接続設定
申請した翌日くらいに外部接続したいPCでVPN接続設定を行います(僕の場合はその日の夕方には使えた)。
このリンクのマニュアルを読みながらやりましょう↓
僕はwindowsですが、そんなに難しくなかったです。
設定ができると、
こんな感じでタスクバー内の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鍵認証を導入したかったのですが、難しくて諦めました。
なにが難しいかというと、
です。
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内でそこまでセキュリティを気にしてないので)。
ここを参考にしました↓
追記(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
で簡単につなげるようになった。
参考記事↓