SSブログ

paramiko を使い git リポジトリに ssh 接続をする [Python]

これは、 Python Advent Calendar 2021 https://qiita.com/advent-calendar/2021/python の14日目の記事です

そもそもの始まりは、この時 https://nakagami.blog.ss-blog.jp/2021-12-04
SageMaker Studio Lab から git リポジトリに ssh 接続できるとうれしいなぁ、と思ったこと。
git コマンドがあって ssh コマンドがない環境ってあんまりないと思うけど、これはそういう状況。

ssh 接続できると
- プライベートリポジトリにアクセスできる
- push できる
という利点がある。

GIT_SSHという環境に ssh 接続するコマンドを指定できることは知っていた。
なんとか、 SageMaker Studio Lab の環境で ssh 接続できないか・・・

試行錯誤の末、こんなスクリプトができあがった
https://gist.github.com/nakagami/bdae2e98bab06461041b169936c6bb70

Linux の場合(おそらく macOS/BSD でも)こんな感じ

1. ssh-keygen -t ed25519 -C "your_email@example.com" でキーペアを作る → .ssh/id_ed25519 と .ssh/id_ed25519.pub が生成される
2. https://github.com/settings/keys の SSH keys に ~/.ssh/id_ed25519.pub を登録
3. pip install paramiko
4. gitssh.py をどこかに置いて実行権限をつける (chmod +x gitssh.py)
5. .bashrc に環境変数 GIT_SSH として、gitssh.py のフルパスを設定(export GIT_SSH=/path/to/gitssh.py)

のような手順のあと、
git clone git@github.com:github/docs.git
で、ssh 接続 でリポジトリを clone できる。

秘密鍵は ${HOME}/.ssh/id_ed25519 を使うようになっているが、他のパスの秘密鍵を指定したい場合は gitssh.py の該当部分を書き換えて使う

・・・さて、そもそものきっかけであった SageMaker Studio Lab では、
上記で作成した公開鍵を .ssh/id_ed25519 に置いて、環境変数を設定してもうまく動かない。
outbound の port 22 が塞がれているようだ。残念。

幸いにも、 GitHub では、 443 ポートを使って ssh 接続できる。
Using SSH over the HTTPS port
https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port

スクリプトの
PORT = 22
となっているところを
PORT = 443
と変更し、
git clone git@github.com:github/docs.git
でなく
git clone git@ssh.github.com:github/docs.git
と、ホストに ssh.github.com を指定すると clone できた。

めでたしめでたし
コメント(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント