Closed9

OpenSSH

3w36zj63w36zj6

https://www.openssh.com/

https://man.openbsd.org/ssh

鍵の作成と登録

ssh-keygenで公開鍵および秘密鍵を作成する。-tで暗号アルゴリズム、-fで鍵ファイルの保存先を指定する。以下はED25519で作成する例。Ed25519の鍵のビット長は256bit固定。

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

鍵のビット長は-bで指定する。以下はECDSAの521bitで作成する例。

ssh-keygen -t ecdsa -b 521 -f ~/.ssh/id_ecdsa

鍵のコメントにユーザー名とホスト名を含めたくない場合は-Cで空白を渡す。

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C ""

作成した公開鍵*.pubはSCPやSFTPなど何らかの方法でサーバーの~/.ssh/authorized_keysに追加する。

https://wiki.archlinux.jp/index.php/SSH_鍵

基本

以下のコマンドで接続。-iIdentity file(秘密鍵)の指定。

ssh ユーザー名@ホスト名 -i ~/.ssh/秘密鍵

これを~/.ssh/configを使用して行う場合は以下の内容を追加する。Hostから次のHostの直前までの記述が一つの接続先に対する設定となる。

インデントは不要だが可読性を上げるためにつけることを推奨。

~/.ssh/config
Host 接続名
    HostName ホスト名
    User ユーザー名
    IdentityFile ~/.ssh/id_rsa

以下のコマンドで接続。

ssh 接続名
3w36zj63w36zj6

プロパティ

全てのプロパティはmanを参照。

https://man.openbsd.org/ssh_config

プロパティ 説明 備考
Host 接続先のHost名のエイリアス Host以降の宣言を​​指定されたパターンのいずれかに一致するホストのみに限定する。
HostName 接続先のIPアドレス or ホスト名
Port 接続先のポート番号 省略すると22となる。
User ログインユーザ名
IdentityFile 秘密鍵のパス
IdentitiesOnly 指定された秘密鍵のみを使用するかどうか yesを推奨。
3w36zj63w36zj6

パターン

ゼロ個以上の文字に一致する*と1文字に一致する?を使用できる。

Host *.co.uk

Host 192.168.0.?

Match

Matchで色々な条件が満たされる場合にのみプロパティを適用できる。使用できる条件のキーワードはmanを参照。

Match host *.example.com
    # HostNameが*.exmaple.comの接続先に適用するプロパティ

Match originalhost target*
    # Hostがtarget*の接続先に適用するプロパティ

Matchを使った宣言は各接続先の宣言の後に記述すべきだが、Match finalとすると全てのHostが解析された後に解析される。

3w36zj63w36zj6

多段SSH

ProxyCommandを紹介している記事が散見されるが古い情報なのでProxyJumpでよい。

Host jump1
  HostName jump1.example.com
  User your_username

Host jump2
  HostName jump2.example.com
  User username
  ProxyJump jump1

Host targethost
  HostName target.example.com
  User username
  ProxyJump jump2
3w36zj63w36zj6

Includeによるファイル分割

OpenSSH 7.3から使用可。

OpenBSD manual pagesのssh_configの説明は以下の通り。

https://man.openbsd.org/ssh_config

Include

Include the specified configuration file(s). Multiple pathnames may be specified and each pathname may contain glob(7) wildcards and, for user configurations, shell-like ‘~’ references to user home directories. Wildcards will be expanded and processed in lexical order. Files without absolute paths are assumed to be in ~/.ssh if included in a user configuration file or /etc/ssh if included from the system configuration file. Include directive may appear inside a Match or Host block to perform conditional inclusion.

よってIncludeは先頭に書く。

~/.ssh/config.d/に個別の設定ファイルを置くことにする場合は、~/.ssh/configを以下のように更新する。

~/.ssh/config
Include ~/.ssh/config.d/*
3w36zj63w36zj6

Port Forwarding

以下は接続先から見たexample.com:8000を接続元のlocalhost:8001にバインドする例。

ssh 接続先 -L 8001:example.com:8000 -fN
  • -fでバックグラウンドで実行する
  • -Nでリモートでコマンドを実行しない(シェルを起動しない)

https://note.crohaco.net/2017/ssh-tunnel/

このスクラップは2023/10/18にクローズされました