gitでホームページを自動デプロイするための手順その2くらい
git環境を構築したら、Pushするたびに毎回パスワードを聞かれる。面倒なので、SSHの設定を行う。
コマンド系の手順になると、Windowsユーザーたちが逃げ回るのが目に見えますが・・。
まず、公開鍵暗号方式通信の概略図
公開鍵暗号方式は、施錠するための鍵と解錠するための鍵が違います。でもペアです。できるんけ?と思いますが、数学的には可能です。
このため、公開鍵をクラックされたところで、中身が知られるわけではありません。
※SSH通信の場合は、サーバーの情報をクライアントが見るので、サーバー側が情報提供者となるので公開鍵はサーバーに置きます。
というのは、良く聞く説明ですが、この方式を使うと何が良いかというと・・・
あんたに対して、公開鍵を使うぞ!というためのパスワードがもう1個必要になるのですが、そのパスワードを省略できるわけです(言って良いのかそんなこと・・・)。
つまり、公開鍵方式を使うためのパスワードを省略してしまえば、あとは「公開鍵」と「秘密鍵」のマッチングだけで認証されるので、パスワード入力を省いて鍵マッチングだけでログインできてしまうという算段なんですね。
で、この「公開鍵」と「秘密鍵」は個人で勝手に作れます(笑)。
よくわからん場合はとにかく、PowerShellを起動しよう!
公開鍵と秘密鍵の置き場所は決まっています。
Windowsの場合は
c:\Users\<ユーザ>\.ssh
Linuxの場合は
~/.ssh
PowerShellでSSH接続し、ホームページサーバーに接続します。
ssh <username>@<domain>.ne.jp
ほんで、~/.sshに移動して(無ければ作る)、
ssh-keygen -t rsa -f id_rsa_sunday
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa_sunday Your public key has been saved in id_rsa_sunday.pub The key fingerprint is: SHA256:2NP9xA3JV9j8taahjqFFT+FjlbOmDjiD4ip7o2ZT3oI *********-******* The key's randomart image is: +---[RSA 3072]----+ なんかここは覗かれたらまずい気がする・・・。 +----[SHA256]-----+
まず、「id_rsa_sunday」は好きな名前でいいです。
次に、「Enter passphrase (empty for no passphrase):」と聞かれますので何も入力せずにEnterキーを押します。
% cat id_rsa_sunday.pub > authorized_keys % chmod 600 ./authorized_keys
公開鍵のファイル名を変更します。公開鍵はファイル名がきまっとります。
最後に秘密鍵である「id_rsa_sunday」をクライアント環境に持ってくるわけです。
その後、Configを設定すると、ユーザー名とIPアドレス(ドメイン)だけで接続できるようになります。
Host <FQDN> HostName <FQDN> User <userName> IdentityFile C:\Users\<username>\.ssh\id_rsa_sunday
上記のファイルを「C:\Users\<username>\.ssh」配下に「config(拡張子なし)」に書きます。無ければ作れば良い。
もう一回PowerShellに戻って、SSH接続で公開鍵が動作するか確認します。
ssh <userName>@<DomainName>.ne.jp
だけで、接続できれば、完了。
#!/usr/local/bin/bash cd /home/<HPのフォルダ> git pull origin master
上記のフォルダをbareディレクトリの「hooks」フォルダに入れる。
ここまでやって、やっとコミットと同時に即反映という仕組みができました。
以下は、RaspPiだったらできたのになぁと思いながらWindowsでKeyGenした結果、SSH接続できなかった話。
公開鍵と秘密鍵の置き場所は決まっています。
Windowsの場合は
c:\Users\<ユーザ>\.ssh
Linuxの場合は
~/.ssh
というわけで、上記の場所に移動します。.sshフォルダがない場合は作ります。
PS C:\Users\BieBo\.ssh> ssh-keygen -t rsa -f id_rsa_sunday Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa_sunday Your public key has been saved in id_rsa_sunday.pub The key fingerprint is: SHA256:2NP9xA3JV9j8taahjqFFT+FjlbOmDjiD4ip7o2ZT3oI *********-******* The key's randomart image is: +---[RSA 3072]----+ なんかここは覗かれたらまずい気がする・・・。 +----[SHA256]-----+
まず、「id_rsa_sunday」は好きな名前でいいです。
次に、「Enter passphrase (empty for no passphrase):」と聞かれますので何も入力せずにEnterキーを押します。
次に公開鍵のファイル名を変更します。公開鍵はファイル名がきまっとります。
cat .\id_rsa_sunday.pub > ./authorized_keys
で、この公開鍵をサーバーにアップロードします。パスワード入力最後の日です。
scp .\authorized_keys <username>@<IP-address or Domain Name>:~/.ssh/
SCPでも何でもいいですが、authorized_keysをサーバー側の~/.sshフォルダに転送します。また、authorized_keysのパーミッションは「600」にしておきましょう。そうすると、自分しか使えなくなります。