Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kashewnuts/d57aff61d25d36eb7799d4ec915d91f2 to your computer and use it in GitHub Desktop.
Save kashewnuts/d57aff61d25d36eb7799d4ec915d91f2 to your computer and use it in GitHub Desktop.
GitHubからはじまるSSH入門.md

GitHubからはじまるSSH入門

GitHub使ってますよね!

一度使い始めると当たり前に使っているのですが、毎回調べてしまうことがSSHの使い方。 コマンドの流れはGitHubの方を参照すればわかるのですが、それぞれの意味やそれに伴いできるファイルが何なのか一度整理してみました。

SSH

  • SecureShellの略。Secureな通信を行うためのプロトコル。
  • 公開鍵認証という仕組みを用いて、セキュアな通信を実現している。

コマンド

ssh

  • SSHでリモートホストに接続してコマンドを実行する。

  • 基本の使い方: ssh ユーザ名@接続先のホスト名(IPアドレス)

  • sshコマンドを実行しているユーザ=ログインするユーザの場合、ユーザ名は省略できる。

  • オプション

    • -A: 接続先でも秘密鍵の情報が引き継がられる。
    • -a: 接続先に秘密鍵の情報を引き継がない
    • -C: データを圧縮
    • -c: 暗号方式を指定
    • -i: 使用する秘密鍵を任意に指定できる。指定しない場合~/.ssh/id_rsaを見に行く。
    • -T: 仮想端末の割り当てを禁止(ssh -vTなどで接続確認に使う)
    • -v: デバッグする(verboseモードでログを出力する)
    • -f: SSh先でコマンドを実行した後に、バックグラウンドへと潜る
    • -N: シェルを起動しなくなる(SSH先で何のコマンドも実行しない)
    • -L: トンネルを掘る ssh -L (ローカルで使用するポート):(目的サーバのアドレス):(目的サーバで待ち受けてるポート番号)

ssh-keygen

  • 公開鍵認証方式で使用するキーペア(公開鍵と秘密鍵)を生成する。

ssh-agent

  • SSHの秘密鍵を保持し、SSHクライアントの依頼に応じて秘密鍵の処理を行うためのプログラム
  • OpenSSHはssh-agent, Windows用はPuttyのPagentなどがある。
  • これらを起動しておくことで、SSH クライアントはパスフレーズの入力を省略してリモートへのアクセスが可能となる。
+-----------+
| SSH agent | (秘密鍵を保持)
+-----------+
      ^
      | clientは秘密鍵の処理を依頼, agentは処理結果を返す
      v
+------------+      公開鍵認証       +------+
| SSH client | <-------------------> | sshd |
+------------+                       +------+

eval "$(ssh-agent -s)" or eval `ssh-agent`

  • ssh-agentが動作しているか確認

ssh-add

  • 秘密鍵の登録(-d: 削除, -l: 一覧)を行う

ファイル

~/.ssh/config

SSH接続の情報を定義するファイル。

# 次のHostキーワードが現れるまでの項目を1つの設定とする。
# *, ?などのワイルドカードがつかえる。
# ここでは、exampleがコマンドラインで使う設定名になる。
Host example
  Hostname example.net            # ホスト名
  Port 30022                      # ポート番号
  User non117                     # ユーザ名
  IdentityFile ~/.ssh/example_key # 秘密鍵のファイルへのパス

known_hosts

一度接続したことのあるサーバのSSHサーバ証明書が格納される。

authorized_keys

接続を許可する複数の公開鍵を登録するサーバー側のファイル。 既存の情報を消してしまわないように追加モードで書き込む事。

SSHトンネル(ポートフォワード)

  • 特定のポート番号に届けられた通信を、特定のIPアドレス、ポート番号に転送する仕組み
  • $ ssh -L 1234:db1:5678 : ローカルの1234ポートにアクセスすると、DB1の5678ポートにアクセスできる
  • SSH通信の中を通してすべてやってるからトンネル

メモ

  • OpenSSHでは~/.ssh/内のファイルがモード600(ユーザーのみ読み書き可能)でないと使用できない。

Tips

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment