こんにちは。WindowsからSSH接続するために、色んなクライアントを試してきましたが、Tabbyが結構良い感じです。※TabbyはSSHクライアントだけではなく、WSL等も使えるTerminalアプリです。
これ一つで、SSH接続はもちろんのこと、SFTPやX11転送、多段SSHも全部簡単にできちゃいます(別途X11関係のソフトを入れる必要はあります)。Windows以外のプラットフォームでも大丈夫ですが、今回は諸般の事情でWindows版のみで導入方法の紹介です。
日本語にもローカライズされていてありがたいですね。積極的に開発が進められている印象です。
本記事では特に、普段SSHなんて触ったことが無い人が、鍵認証を行い、多段SSHをすること、X11転送することを可能とすることを目的としています。
慣れてる人なら読む必要は無いのでご自身で設定してください。その方が早いです。
※本記事の内容は弊学学生さんに向けた記事であるためやってることも目的も限定的です。学生さんはよく分かんないと思うので、遠慮無く金子はじめスタッフに質問して下さい。
やりたいことは多段SSH
こんな感じのことをやりますね。踏み台サーバーを使ってメインのサーバーにアクセスします。これを多段SSHとか言ったりします。
VcXsrv Windows X Server
Taddyをインストールする前にVcXsrvを入れます。
インストール
https://sourceforge.net/projects/vcxsrv/
上からDownloadボタンを押してダウンロードしてください(ボタンを押してカウントダウンが終わるとダウンロードが始まります)。
ダウンロードしたものを起動すると、「ユーザーアカウント制御」に「変更許可しますか?」的なことを聞かれるので「はい」とします。
インストールは、デフォルトの設定で良いので、以下の画面が出てきますが「Next」「Install」と押しちゃって良いです。変えたい人は変えても良いです。
インストールを押す。
設定
インストールしたアプリケーションはXLaunchという名前でインストールされてます。これを起動して設定しましょう。設定は以下の図の流れでやって下さい。
Multiple windowsを押してNext。
Start no clientを選択しNext。
全部チェックを入れてNext。
設定は保存しておくと、次回はその保存したものをダブルクリックするだけで起動できて便利です。
最後にFinishを押すと、セキュリティの警告などが出るかもですが許可してください。基本的に全部許可で良いと思いますがお任せします(制限しすぎると動かなくなる本末転倒)。
Tabbyのインストールと設定
作者のgithubからインストーラーをダウンロードします。Windowsユーザーは上の図の「これ」をクリックして、ダウンロードして下さい。
ダウンロードが完了したら、インストーラーを開いて下さい。出てきた画面がなんだか分からない人はそのままNextを押して下さい。
ここも、出てきた画面がなんだか分からない人はそのまま「Install」を押せば良いです。ピンク枠のところでインストール先を決めていますが、そのままでも良いと思います。
インストールが終わるとこの画面になります。Run Tabbyにチェックマークを付けると、Finishを押した際にすぐにTabbyが起動できますよ。
とりあえず、Tabbyを起動して下さい。
初期設定を済ませましょう。ここはお好みでどうぞ。
おすすめは、グローバルホットキーを有効にすることです。Ctrl+SpaceキーでいつでもTabbyを呼ぶことができます。
SSH鍵を作る
サーバーに接続するのに鍵を使います。家の鍵を思い浮かべてもらっても良いと思いますが、そう言うのを作ってサーバーに登録します。
コマンドプロンプト(Windowsでコマンド打つ画面の一つ)を起動します。
上の図中の「+」マークをクリックします。そうすると黒い画面が起動して、コマンド入力が出来るようになると思います。これがコマンドプロンプトと言われる画面です。
黒い画面に以下のコマンドを入力してEnterを押します。
ssh-keygen.exe -t ed25519
“Enter file in which to save the key ~”と出てきます。特に変更する理由も無いと思うので、このままエンターを押して下さい。
そのあと、”Enter passphrase”と言われるので、鍵を使いたいときに入力するパスワードを決めます。パスワードを入力してEnterを押して下さい。この際、入力した文字は全く見えないので注意です。見えなくても入力はされているので、Enterで確定させて下さいね。
これが、一連の流れを適用した後のコマンドプロンプトの様子です。こうなりましたか?
鍵をサーバーに登録しよう
鍵を登録することによって、サーバーにアクセスするたびにパスワードを聞かれることがなくなります(鍵のパスフレーズは聞かれます)。
以下を手元に準備します。
- サーバー1(踏み台)
- ログインID
- パスワード
- サーバーのホスト名(例えば〜.jpなど)
- サーバー2
- ログインID
- パスワード
- サーバーのホスト名(例えば〜.jpなど)
サーバー1の設定
サーバー1に鍵をアップロードします。コマンドプロンプトを開いて以下のコマンドを入力します。
cd
scp .ssh/id_ed25519.pub サーバー1のログインID@サーバー1のホスト名:~
サーバー1にアップロードした鍵を登録します。まず、コマンドプロンプト上で以下のコマンドを打ちましょう。これにより、サーバーにアクセスできます。
ssh サーバー1のログインID@サーバー1のホスト名
サーバー1のパスワードを聞かれると思うので、入力してください。無事にサーバーに入ったら以下のコマンドを入力してください。
mkdir -m 700 .ssh
このコマンドによって、.sshというディレクトリー(フォルダー)が作成されます。ここに先ほどアップロードした鍵を追加します。以下のコマンドを入力しましょう。
cat id_ed25519.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
上のコマンドでauthorized_keysというファイルに鍵の中身を書き出しています。下のコマンドで、鍵を誰がどの程度使えるか(アクセス権)を決めています。
サーバー2の設定
サーバー1にアクセスしたまま、サーバー2にアクセスして同じように鍵の登録をします。
まず、サーバー1からサーバー2に鍵をアップロードします。サーバー1に繋いだままの状態で、以下のコマンドを入力してください。
cd
scp id_ed25519.pub サーバー2のログインID@サーバ−2のホスト名:~
sshコマンドによってサーバー2に入ります。その後鍵を登録してアクセス権を設定します。
ssh サーバー2のログインID@サーバー2のホスト名
mkdir -m 700 .ssh
cat id_ed25519.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
ここまでで大変なプロセスは終わりです。
Tabbyで簡単にサーバー2にアクセスしよう
今まではsshコマンドを使ったりして毎回大変でした。そこで、Tabbyで簡単にアクセスできるように設定しましょう。
一度Tabbyを終了してから起動し直します。
上の図のピンク丸部分をクリックし、設定画面を起動しましょう。
サーバー1の設定
左のメニューから「プロファイルと接続」を押して、「新しいプロファイル」というボタンを押します(上図)。
出てきた画面で、「SSH接続」を押す。
上図のようにSSHの設定を行います。まずはサーバー1に対して設定を行います。保存してください。
項目1 | 項目2 | 設定 |
名前 | サーバー1の名前(なんでもいい) | |
全般タブ | 接続 | Direct |
ホスト | サーバー1のホスト名 | |
ポート | 22(指定されてなければ) | |
ユーザー名 | サーバー1のユーザー名 | |
認証方法 | キー | |
秘密鍵 | 鍵(id_ed25519)を指定。 何も指定してなければ恐らく file://C:\Users\ユーザー名\.ssh\id_ed25519 | |
詳細タブ | X11転送 | スイッチをOnにする。 |
サーバー2の設定
新しいプロファイルを作成してください。
項目1 | 項目2 | 設定 |
名前 | | サーバー2の名前(なんでもいい) |
全般タブ | 接続 | ジャンプサーバー |
| ホスト | サーバー2のホスト名 |
ジャンプサーバー | サーバー1の「名前」 | |
| ポート | 22(指定されてなければ) |
| ユーザー名 | サーバー2のユーザー名 |
| 認証方法 | キー |
| 秘密鍵 | 鍵(id_ed25519)を指定。 何も指定してなければ恐らく file://C:\Users\ユーザー名\.ssh\id_ed25519 |
詳細タブ | X11転送 | スイッチをOnにする。 |
保存を押して完了です。
アクセスできるか試してみよう
Tabbyを起動し直して、下の図のピンク丸部分を押して下さい。「サーバー2の名前」が見つかるはずなのでそれをクリックして接続しましょう。
鍵のパスフレーズを入力後、Remember、キーを記憶をした方が、いちいち入力する必要が省けて今後楽です。
無事にサーバー2にログインできましたか?
できたら、最後に以下のコマンドを入力しましょう。
xeyes
なんかお目々が出てきたら終わりです。
おつかれさまでした。