以下の様に、家のWindows PCからRaspberry Piを踏み台にしてエックスサーバーにSSH接続しました。
事前準備
エックスサーバー側(Linux2)
- SSHの設定でSSHのパスフレーズを設定
- SSH鍵を生成
- このSSH鍵をWindow PCのパソコンにダウンロード
- SSHを有効にしてある事
- 次の情報を調べておく(ホスト名 (サーバ情報に記載)、ユーザー名(=サーバID))
Raspberry Pi側(Linux1)
- SSHを有効化
- パスワード設定(パスワードでSSHする場合(ログインパスワード))
- 次の情報を調べておく(IPアドレス、ユーザー名(初期値はpi))
SSH_1設定~接続
- 一つ目のTeraTermを開いて
- 2段目エックスサーバー(Linux2)に転送する設定を記述して
- 1段目Raspberry Pi 4(Linux1)に接続
- Windows PCで一つ目のTeraTermを開く。
- 新しい接続をキャンセルして、
- 『設定(S)』→『SSH転送(O)…』を選択
- 『追加』を押す
- 右の画面が開くので、Raspberry Pi(Linux1)のローカルポート番号を入れて、リモート側ホストはエックスサーバのSSHサーバー名を入れる。 右の画面では10022と入れていますが、予約や使用されていなポート番号であれば、何でも構いません。
- エックスサーバのSSHポートは10022固定なのでリモート側ホストのポートは10022しか使えません。
- 『OK』を押す。
- 右の画面になるので、『OK』を押す。
- 『ファイル(F)』→『新しい接続(N)』を選択。
- ホスト(T)にRaspberry PiのIPアドレスを入れる。
- TCPポート#(P)には22を入れる。
- そして『OK』を押す
- 『新しい接続』の情報が正しければ、右の画面になる。
- ユーザー名(N)を入れる。Raspberry Piの場合は初期値から変更してなければ『pi』。
- パスフレーズにはRaspberry Piのpiユーザーのログインパスワードを入れる。
- 『OK』を押す。
- 右の様にRaspberry Piにつながりました。 この画面は、Windows PCの一つ目のTeraTermの画面。この状態で、
- Windows PCでもう二つ目のTeraTermを開く。 それが次のSSH_2。
SSH_2設定~接続
これは簡単です。 先ほど、SSH_1で設定した『SSHポート転送』は、Raspberry Pi(Linux1)内で転送されるポートを設定しています。 その場合のローカルポートとはRaspberry Pi(Linux1)自身のローカルポートです。
- SSH_1の『SSHポート転送』でRaspberry Piのローカルポートとして10022を入れたので、ここでも10022を入れてる。
- この場合ホスト(T)とは、既にSSH_1でRaspberry Piと繋がっているので、Raspberry Pi自身のローカルIPアドレスを指定します。 自分自身を示すローカルアドレスは127.0.0.1(或いは『localhost』)と決まっているので、127.0.0.1を入力。
- これで『OK』を押す。
- 右の画面が開くので、ユーザー名にエックスサーバのサーバIDを入れる。
- パスフレーズにエックスサーバーのSSHパスフレーズを入れる。
- 『RSA/DSA…』を選択して、エックスサーバでSSHを有効化した時に生成して、Windows10にダウンロードした鍵ファイルを選択する。
- 『OK』を押す。
おめでとうございます。 つながりました。
TeraTerm2つ立ち上げているので、以下の様に2つ出てきます。 上の画面が、Windows10からRaspberry PiにつながっているTeraTermの画面。 下の画面が、Raspberry Piを通して、Windows10とエックスサーバがつながっているTeraTermの画面です。
Raspberry Piを通しているので、上の画面の接続を切ると、両方切断され両方の画面が消えます。
更にRaspberry Piに転送先を登録するともっと便利
TeraTermの『SSHポート転送』設定をせずに、Raspberry Piの~/.ssh/configを記述しておくと、TeraTermでRaspberry PiにSSH通信した状態で、
コマンドプロンプトから『ssh xserver』とするとパスフレーズを聞いてくるのでエックスサーバーのパスフレーズを入力。 私の場合、SSH接続名をconfigファイルの中で『xserver』としたので、ssh xserverですが、xserverでなくても構いません。
この様にxerverにつながります。簡単ですね。
しかし、この場合エックスサーバーの秘密鍵をRaspberry Piに保存しなければならないので、セキュリティ上よろしくありません。 Window PCにRaspberry Piとエックスサーバの秘密鍵を保存して、Raspberry Piにはエックスサーバーの秘密鍵を保存せずに接続するセキュアで簡単な方法は、Windows側のc:/Users/あなたのユーザー名/.ssh/configにProxyCommandで設定する方法があります。 但し、この場合全てのSSH認証がパスワード認証でなく、秘密鍵認証にしなければなりません。 『Raspberry Piに鍵を使ってSSH通信』をご参考にしてください)
Raspberry Piの~/.sshディレクトリにconfigファイルを作る。
configファイルの記述方法
- Raspberry Piの~/.sshディレクトリにconfigファイルを作る。(~$ touch ./.ssh/config)
- 権限を600にする。(644権限ではSSH通信をSSHサーバーに拒否される。~$ sudo chmod 600 ./.ssh/config)
- configファイルに下の様に記入して保存。
- 『xserver』と書いたところは付けたいSSH接続名でいい。
『~$ ssh SSH接続名』とすると接続される。 - Hostnameはエックスサーバーのホスト名 (=サーバー番号.xserver.jp)。
- Portは10022固定。
- UserはエックスサーバーのサーバーID。
- IdentifyFileはRaspberry Pi内のエックスサーバーの秘密鍵の場所。
- 予めRaspberry Piにエックスサーバの秘密鍵を転送しておく。
- エックスサーバーの秘密鍵の権限を600にしておく。
- 『xserver』と書いたところは付けたいSSH接続名でいい。
- Raspberry Piを再起動しなくてもconfig反映されました。
Host xserver Hostname sv1_ _ _ _.xserver.jp Port 10022 User xs4_ _ _ _ IdentityFile ~/.ssh/xs4_ _ _ _.key
パラメータ | 説明 |
---|---|
Host | 適当なSSH接続名。 プロンプトから『ssh SSH接続名』で接続する時に使用する |
HostName | ホスト名 接続したいSSHサーバーのサーバ番号とドメインかIPアドレス |
Port | 接続したいSSHサーバーのポート番号 通常ポート番号は22 22は攻撃されやすいので、エックスサーバのようにポート番号を変えているサーバーもある。 エックスサーバーは10022 |
User | SSH接続のユーザー名 ラズパイ(Raspbian)の場合はpi。(初期値) エックスサーバーではサーバー番号と言っています。 |
IdentityFile | 鍵認証する秘密鍵ファイルのパス。 ファイル名も記述する。 |
エックスサーバーのホスト名は、『サーバー情報』に下の図の様に記載されています。
コメント