前提環境
- クライアント Mac
- サーバ Linux
SSHとは
サーバへの安全なリモートログインを提供する仕組み
認証の方法としてパスワード方式と鍵方式の2つがあるが今回扱うのは後者
詳しい仕組みが知りたい場合は以下の記事がオススメ
SSHで実行サーバに初回ログインするまでの手順(ざっくり)
- ローカルマシンで公開鍵・秘密鍵の作成
- 作成したファイルのパーミッションを正しく設定する
- 公開鍵
id_rsa.pub
をサーバ管理者に渡し、サーバ管理者はそれぞれのサーバの認証済み鍵リストにその公開鍵を追加する - SSHコマンドで踏み台サーバ経由で実行サーバにログインする
秘密鍵・公開鍵の作り方
ssh-keygen
コマンドを用いて作成する
$ mkdir -p ~/.ssh && cd ~/.ssh
$ ssh-keygen -t rsa
$ ls # 確認
id_rsa id_rsa.pub
ファイルやディレクトリのパーミッションの設定
秘密鍵ファイルと~/.ssh
ディレクトリのパーミッションを正しく設定する
$ chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_rsa
踏み台サーバ経由でSSH接続
~/.ssh/config
を以下のように編集する(VScodeで編集する場合は、code ~/.ssh/config
で可能)
~/.ssh/config
Host ProxyServerHoge # 好きな名前で
Hostname 123.456.789.0 # 踏み台サーバのIPアドレス
Port 1001 # 踏み台サーバのポート番号
User taro # ログインユーザ名
IdentityFile ~/.ssh/id_rsa
Host TargetServer # 好きな名前で
HostName 987.654.321.0 # 目標サーバのIPアドレス
Port 1002 # 目標サーバのポート番号
User taro # ログインユーザ名
ProxyCommand ssh -CW %h:%p -4 ProxyServerHoge
シェル上で以下のコマンドを実行し、接続
$ ssh TargetServer
初回はホスト認証で以下のように聞かれるので
Are you sure you want to continue connecting (yes/no)?
yes
と入力してEnter
ローカルマシンのVSCodeからリモートのファイルを編集する
Microsoft製のRemote - SSH
というパッケージを使用する
内部的にやってることはSSHポートフォワーディング
具体的な手順は以下のよう
- パッケージ一覧から
Remote - SSH
をインストール
-
F1
でコマンドパレットを開き、「Remote-SSH: Connect to Host...」というコマンドを選択する
- 先ほど
~/.ssh/config
に保存した接続先ホスト一覧が表示されるので、接続したいホストを選択する - 接続に成功するまで待ってから、 「フォルダーを開く」をクリックし、自分が開きたいフォルダーを選択する
- あとはローカルファイルを編集するのと同様
SSHログインしてコマンドを実行する(余興)
ssh TargetServer '実行したいコマンド'
# 例
ssh TargetServer 'ls'
ローカルのシェルスクリプトをサーバ上で実行するなら
ssh TargetServer 'sh -s' < sample.sh
という方法もある
##参考文献