なんか突如としてGitHubにHTTP経由で繋ぐのが面倒くさくなったのでSSHで繋げるようにしたときのメモ。
確認環境
- Ubuntu 24.04.3 LTS
- RLogin 2.30.8
やり方
SSH鍵の作成
- RLoginを開き、サーバーに接続→新規→サーバー→プロトコルを開く
- 認証キーボタンを押しED25519辺りで適当な名前で鍵を作成する
- 適当な場所に秘密鍵をエクスポートする
- 鍵を右クリックし、公開鍵をコピーして、どっかにメモっておく
GitHubへの登録
- GitHubを開き、アカウント設定に移動、SSH and GPG keysを開く
- SSH keys→New SSH Keyを開く
- Titleに適当な名前を設定
- Key typeはAuthentication Keyにする
- RLoginで作った
- コピーした公開鍵をKeyに貼り付ける
- Add SSH keyボタンを押す
SSH Configを書く
- 作成したSSH鍵を
~/.ssh/github.secとか適当なパスに置く chmod 600 ~/.ssh/github.secとかして自分しか見れないようにする~/.ssh/configを開き、次の内容を記述Host github.com User <ユーザーID> Hostname github.com IdentityFile ~/.ssh/github.sec
既存のリポジトリをSSH対応にする
ここではoriginがリモートであるとして進める。
git remote -vでリモートリポジトリの状況を確認git remote remove originでHTTP通信になってるのを消すgit remote add origin git@github.com:Hoge/piyo.gitでSSH通信に書き換えるgit fetchが通ればOK
投稿日:
古のSFTPマウントツールが軒並み死んでいるためRcloneを使う。WindowsからLinux上に構築したストレージに繋ぐときに便利
前提条件
- 接続先のSSH環境がある
- 接続先のSSH環境の公開鍵認証に利用する秘密鍵にパスフレーズが付いている
確認環境
| Env | Ver |
|---|---|
| OS | Windows 11 Pro (22621.3155) |
| Rclone | 1.65.2 |
手順
- Rcloneをインストールする
choco install rclone - WinFspもインストールする。これがないとマウントできない
- Rcloneの接続設定を作成する。設定ウィザードは少々複雑なのでよく読むこと
rclone config - 設定が完了したら、以下のコマンドでマウントできる
# 例:rclone mount hoge:/home/hoge Z: --network-mode rclone mount <user name>:<mount path> <drive letter>: --network-mode
トラブルシューティング
マウント時のターミナルウィンドウが邪魔
公式の解説によると、Windowsではバックグラウンドで動かすことができない
Use the --daemon flag to force background mode. On Windows you can run mount in foreground only, the flag is ignored.
どうしてもバックグラウンドで動かしたい場合はVDeskを使って適当な仮想デスクトップで起動するか、タスクトレイ系のユーティリティを使ってタスクトレイに突っ込んだりするといいだろう
参考
投稿日:
基本のフォーマット
複数のホストを記述でき ssh <Host> で接続できる
Host hoge
User foo
Hostname git1.example.com
IdentityFile ~/.ssh/config/id_ed25519_foo
Port 22222
Host piyo
User bar
Hostname git2.example.com
IdentityFile ~/.ssh/config/id_ed25519_bar
Port 20202
設定項目
| 項目 | 意味合い |
|---|---|
| Host | sshコマンドで指定する接続先名。Gitで利用する場合はHostnameと合わせる必要がある |
| User | ログインするユーザー名 |
| Hostname | 接続先のホスト名 |
| IdentityFile | 秘密鍵のパス |
| Port | 接続先のポート |
| ForwardAgent | プロキシサーバー側の設定。クライアントからの接続を中継するかどうか |
| ProxyCommand | 踏み台サーバーへの接続コマンド |
トラブルシューティング
GitHubにSSHで繋ぎに行ったときにError: Permission denied (publickey)と出る
GitHubへのSSH接続はUserがgitでなければならない
そういえばgitコマンドはユーザー名を直に指定しているのかSSH Configでgit以外を指定していても通った気がする
GitHubにSSH接続しているときにgit cloneやgit pushがフリーズする
Hostの値がHostnameと異なるとフリーズすることがある
関連記事
投稿日:
毎回パスワードを聞かれるのは面倒なのでkeychainを使って記憶させる。
確認環境
WSL2
| Env | Ver |
|---|---|
| keychain | 2.8.5 |
| Ubuntu | 20.04.5 LTS |
実機
| Env | Ver |
|---|---|
| keychain | 2.8.5 |
| Ubuntu | 24.04.3 LTS |
手順
1. keychainのインストール
sudo apt install keychain
2. keychainの設定
.zshrcに次の行を追加。
keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>
GPG鍵のkeyidは以下で取得可能。
gpg --list-secret-keys --keyid-format=long
3. エージェント連携をシェル設定に書く
~/.keychain配下にホスト名でHOGE-shのようなファイルができているので、これを.zshrcから読み込む。内容的にはssh-agentとkeychainが疎通するための環境設定と思われる。
具体的には以下の内容を.zshrcに追記すればよい。
source $HOME/.keychain/`hostname`-sh
最終的な.zshrcの状態としては以下のようになっていればよい。
keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>
source $HOME/.keychain/`hostname`-sh
hostname-sh-gpgみたいなファイルも出来ているが私の環境ではこれを読み込むと上手く動かなかったので、このファイルは指定しないほうが良さそうに見えた。
トラブルシュート
GPGのキーが見つからないエラーが出る
- Warning: can't find DEADBEEF; skipping
上記が出た場合
~/.gnupg/gpg.confに対して以下の記述をすることで改善する可能性がある(この対策は不完全かもしれない
keyid-format LONG
GPGキーのパスフレーズのプロンプトがGUI側に出る
.zshrcに以下を追記するとCUI側に出るようになる。
export GPG_TTY=$(tty)
更新履歴
- 2026-01-21: エージェントとの連携設定が漏れていたのを追記
- 2026-01-19: Ubuntu実機で確認したので、その結果を記事に反映し、記事を読みやすく改良
