Bitbucketへ接続可能な鍵がssh-agentに登録されているか確認する

SSHのagent forwardingを利用したいケースは、デプロイなどで頻繁にあると思います。
仕事ではBitbucket上にリポジトリを作って、そこにアプリケーションなどを置いています。

TL;DR

  • ~/.ssh/configに設定がある場合、単純にssh -T git@bitbucket.orgが成功してしまう
  • sshコマンドには、-Fという設定ファイルを指定するオプションがある
  • /dev/nullは、空ファイルとして扱える
  • ssh -T git@bitbucket.org -F /dev/nullすれば確認出来る

環境

  • OS ... macOS Sierra 10.12.6
  • 手元のマシンの~/.ssh/configにBitbucketの接続情報を定義済み
  • ssh-agentは起動してある

接続確認

Atlassianの公式ドキュメントのTest SSH authenticationに書いてある通りに通りに実行してみます。
この時点では、ssh-agentに鍵は登録していません。

$ ssh -T git@bitbucket.org
logged in as xxx.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
$ echo $?
0

~/.ssh/configに接続情報を定義していあるので、もちろん成功します。
ssh-agentに登録されている鍵で接続が可能な場合は、接続情報が定義されていなくても成功します。
この挙動を利用して、確認します。

SSHのオプションを確認する

さすがに、~/.ssh/configを削除したり、一時的に退避したりするのは手間だし、ダサいのでNGです。
このサイトには、sshコマンドで使えるオプションが日本語で載っています。
この中から設定ファイルを指定出来るオプションを探し出します。

-F 設定ファイル
ユーザ毎の設定ファイルに別のファイルを指定します。設定ファイルがコマンドラインから与えられた場合、システム全体の設定ファイル
/etc/ssh/ssh_config
は無視されます。デフォルトでは、ユーザ毎の設定ファイルは~/.ssh/configになっています。


ありました。
-Fオプションに接続情報がないファイルを指定してやれば、~/.ssh/configがない環境に近づけることが出来そうです。
空ファイルを指定してみますか。

空ファイルと言えば

空ファイルと言えば、/dev/nullです。
直接参照するのも如何なものかと思わなくもないですが、/dev/nullを使ってみます。

/dev/nullを指定して接続確認

sshのFオプションに、/dev/nullを指定します。

$ ssh -T git@bitbucket.org -F /dev/null
Permission denied (publickey).

キタコレ。
それでは、鍵を登録してから、接続確認してみます。

$ ssh-add ~/.ssh/private_key
Identity added: /Users/xxx/.ssh/private_key (/Users/xxx/.ssh/private_key)
$ ssh -T git@bitbucket.org -F /dev/null
logged in as xxx.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
$ echo $?
0

成功しました。
これでssh-agentにBitbucketに接続可能な鍵が登録されているかどうか、確認出来ました。

コメント

このブログの人気の投稿

ElasticIPを複数利用する時の注意

タスクの実行結果をwhenで指定するならcheck_modeつける

EC2にNameをつける