ssh接続コマンドのオプション -L, -N

コマンドラインにて以下のように打った時

ssh -N -L hogehoge foofoo

-p ポート番号
接続に使用するポート番号を指定

-l ユーザー名
接続に使用するユーザ名を指定

-L リモート側ソケットに与えられたローカル(クライアント)ホスト上の指定のTCPポートまたはUnixソケットが、与えられたリモートホスト上のポートに転送されるよう指定する。ローカル側で、TCPポートにlisten用のソケットを割り当てることにより行われる。

-N リモートコマンドを実行しない。

オプションはほかにも、 -1, -2, -4, -6 など色々ある模様。
うーん、ややこしーーーー

RSA秘密鍵、CSR、CRTの配置

/etc/pki/tls 配下にca.crt, ca.key, ca.csrを配置していく

[vagrant@localhost ssl]$ sudo cp ca.crt /etc/pki/tls/certs/
[vagrant@localhost ssl]$ sudo cp ca.key /etc/pki/tls/private/
[vagrant@localhost ssl]$ sudo cp ca.csr /etc/pki/tls/private/

restorecon (RERSTORE files default selinux security CONtext)
正しいセキュリティコンテキストを付与する

[vagrant@localhost ssl]$ restorecon -RvF /etc/pki/
restorecon reset /etc/pki/dovecot/certs/dovecot.pem context unconfined_u:object_r:dovecot_cert_t:s0->system_u:object_r:dovecot_cert_t:s0
restorecon set context /etc/pki/dovecot/certs/dovecot.pem->system_u:object_r:dovecot_cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/dovecot/private/dovecot.pem context unconfined_u:object_r:dovecot_cert_t:s0->system_u:object_r:dovecot_cert_t:s0
restorecon set context /etc/pki/dovecot/private/dovecot.pem->system_u:object_r:dovecot_cert_t:s0 failed:’Operation not permitted’
restorecon: unable to read directory /etc/pki/rsyslog
restorecon reset /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/ca-trust/extracted/java/cacerts context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/ca-trust/extracted/java/cacerts->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/ca-trust/source/ca-bundle.legacy.crt context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/ca-trust/source/ca-bundle.legacy.crt->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon: unable to read directory /etc/pki/CA/private
restorecon reset /etc/pki/tls/certs/ca.crt context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/tls/certs/ca.crt->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/tls/certs/localhost.crt context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/tls/certs/localhost.crt->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/tls/private/localhost.key context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/tls/private/localhost.key->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/tls/private/ca.key context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/tls/private/ca.key->system_u:object_r:cert_t:s0 failed:’Operation not permitted’
restorecon reset /etc/pki/tls/private/ca.csr context unconfined_u:object_r:cert_t:s0->system_u:object_r:cert_t:s0
restorecon set context /etc/pki/tls/private/ca.csr->system_u:object_r:cert_t:s0 failed:’Operation not permitted’

なんだこれは?

作成したRSA秘密鍵からCSRをつくる

CSRとは「Ceertificate Signing Request」の略でSSLサーバ証明書発行に必要なテキストデータ
公開鍵やコモンネーム(FQDN)、組織名、部署名等が含まれている。
認証局は、CSRと申し込み情報を元に内容を精査してSSLサーバ証明書を発行する

→つまり、認証局がSSL証明書発行に必要なファイルという意味ですね。

openssl req は証明要求(csr)の作成
-new 新規作成
-out 出力する要求ファイル名
-key filename 入力する秘密鍵のファイル名

作成したRSA秘密鍵からCSRをつくります
openssl req -new -key ca.key -out ca.csr
色々聞かれます。
Country Name
state or province name
locality name
organization name
organizational unit name
common name
email address

[vagrant@localhost ssl]$ openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ja
State or Province Name (full name) [Some-State]:tokyo
Locality Name (eg, city) []:shibuya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hpscript
Organizational Unit Name (eg, section) []:developement
Common Name (e.g. server FQDN or YOUR name) []:hpscript
Email Address []:info@hpscript.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:hpscript
An optional company name []:hpscript

RSA秘密鍵を元に、CSRが作られます。

[vagrant@localhost ssl]$ ls
ca.csr  ca.key

作成されたCSR

-----BEGIN CERTIFICATE REQUEST-----
MIIDBjCCAe4CAQAwgY4xCzAJBgNVBAYTAmphMQ4wDAYDVQQIDAV0b2t5bzEQMA4G
A1UEBwwHc2hpYnV5YTERMA8GA1UECgwIaHBzY3JpcHQxFTATBgNVBAsMDGRldmVs
b3BlbWVudDERMA8GA1UEAwwIaHBzY3JpcHQxIDAeBgkqhkiG9w0BCQEWEWluZm9A
aHBzY3JpcHQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmJ4B
3ZcX+fD+dDWaE+76QxYd8Z9ooLwGWneFfpZyOYBDP291rMMzVrSA/tAH0HfXFBKu
P8rmtEB23YEzcy4OKOrTXIZqoKfGO6tTgDQYFSTvGJoNWSpf3CZqqVy6nTyeOOUf
MiN6SdWgZV6ZNYx3OPpCacPCVpaYgmLAVL7MmQr+nTGsfFzB8G3acReKaEa1LFDU
bMf1TYj+pK6cNy5KDU3jKLbfWHf6o+n7rFi4ZhLw6DCDHEJpy2CLxO/RdjpC7Vil
hogehoge
-----END CERTIFICATE REQUEST-----

ほう、csrもハッシュ化されるのか^^

githubに公開鍵を登録して確認する方法

まず、ローカルのコマンドラインで、ssh-keygen -t rsaとして、公開鍵(id_rsa.pub)、秘密鍵(id_rsa)を作ります。

Github personal settingsのSSH and GPG keysにアクセスします。
https://github.com/settings/keys

右上のNew SSH Keyを押下。

title:公開鍵(id_rsa.pub)の名前を入れる。拡張子のpubは必要ないので、id_rsaのみ
Key:公開鍵の中身を入れます。

ssh -T git@github.comで接続確認
ローカルから、ssh -T git@github.comと打ち込みます。

>ssh -T git@github.com
Enter passphrase for key 'C:\Users\hoge/.ssh/id_rsa':
Hi githubix! You've successfully authenticated, but GitHub does not provide shell access.

You’ve successfully authenticatedと表示されればOK
簡単でしょ?

Could not open a connection to your authentication agent.

linuxにログインして、ssh-add -lと打つと、「Could not open a connection to your authentication agent.」と返ってくる。

agrant@precise64:~$ ssh-add -l
Could not open a connection to your authentication agent.

どうやらssh-agentが起動していない模様。eval ‘ssh-agent’と打つ。evalはシェルを実行

vagrant@precise64:~$ eval ‘ssh-agent’
SSH_AUTH_SOCK=/tmp/ssh-GxTXywae1697/agent.1697; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1698; export SSH_AGENT_PID;
echo Agent pid 1698;

ssh-agent: 必要な時に秘密鍵を渡してくれる

再度、ssh-add -lと打つ

vagrant@precise64:~$ ssh-add -l
Could not open a connection to your authentication agent.

なにいいいいいいいいいいいいいいいいい

eval `ssh-agent -s`とする

vagrant@precise64:~$ eval `ssh-agent -s`
Agent pid 1708
vagrant@precise64:~$ ssh-add -l
The agent has no identities.

ひゃほおおおおおおおおおお

Linuxのssh-add コマンドとは何か?

ssh-addって何?

ssh-add: 認証エージェントに秘密鍵(id_rsa)を登録すること。
引数なしで実行された場合、~/.ssh/id_rsaが追加される。
秘密鍵(id_rsa)を読み込んだ後、ssh-addはそれに対応する情報を、秘密鍵のファイル名にサフィックス-cert.pubを追加したファイルから読み込もうとする。

秘密鍵の登録状況の確認

ssh-add -l

秘密鍵の確認

ssh-add hoge/fuga