Upgrade to Pro — share decks privately, control downloads, hide ads and more …

sshの秘密鍵にpassphrase掛けない人と、 無闇やたらにsudoする人に、死の鉄槌を!!!!!!!!!!!!!!!!!!!!!!!!!!! #TechLunch

sshの秘密鍵にpassphrase掛けない人と、 無闇やたらにsudoする人に、死の鉄槌を!!!!!!!!!!!!!!!!!!!!!!!!!!! #TechLunch

sshの秘密鍵にpassphrase掛けない人と、 無闇やたらにsudoする人に、死の鉄槌を!!!!!!!!!!!!!!!!!!!!!!!!!!!
2013/02/06 (水) 12:00-13:00 @ Livesense TechLunch
発表者:松永 一郎

Livesense Inc.

April 21, 2014
Tweet

More Decks by Livesense Inc.

Other Decks in Technology

Transcript

  1. まず質問 • agent使ってる人。 (場合によっては、このrc終了) • linux開発環境に入る毎に、sshの秘密鍵の認 証(パスワード入力)を行なっている人。 • ある環境から別環境(例えば、tanzaniaや、 viper等から本番等)にログインする為に、秘密

    鍵ファイルを各踏み台に転送している人。 • 先週、松阪氏がbash completeの話してたけ ど、scp、リモートのファイル名補完してくれない よね!! 駄目じゃんと思った人。
  2. 御託はわかった。やりかたを教えろください。 ichiro@ichiro:~ $ ssh-add -l Could not open a connection

    to your authentication agent. ichiro@ichiro:~ $ ps auxww|grep ssh-agent ichiro 29177 0.0 0.0 14576 920 pts/8 S+ 02:10 0:00 grep ssh-agent ichiro@ichiro:~ $ eval $(ssh-agent) Agent pid 29188 ichiro@ichiro:~ $ ps auxww|grep ssh-agent ichiro 29188 0.0 0.0 12492 324 ? Ss 02:11 0:00 ssh-agent ichiro 29192 0.0 0.0 14576 920 pts/8 S+ 02:11 0:00 grep ssh-agent ichiro@ichiro:~ $ ssh-add -l The agent has no identities. $ ssh-add -t180 ~/.ssh/id_rsa_livesense Enter passphrase for /home/vikke/.ssh/id_rsa_livesense: Identity added: /home/vikke/.ssh/id_rsa_livesense (/home/vikke/.ssh/id_rsa_livesense) Lifetime set to 180 seconds ichiro@ichiro:~ $ ssh-add -t 180 ~/.ssh/id_dsa_mars Enter passphrase for /home/vikke/.ssh/id_dsa_mars: Identity added: /home/vikke/.ssh/id_dsa_mars (/home/vikke/.ssh/id_dsa_mars) Lifetime set to 180 seconds ichiro@ichiro:~ $ ssh-add -l 2048 15:1a:af:5c:b9:31:6b:6d:7c:4e:11:85:07:e9:e5:76 /home/vikke/.ssh/id_rsa_livesense (RSA) 1024 3a:de:8f:e8:75:21:77:b7:a2:79:6d:ed:1b:ed:5b:8e /home/vikke/.ssh/id_dsa_mars (DSA)
  3. bashrc (agent常駐部) # SSHのagent周りの設定 if ssh-add -l >/dev/null 2>&1 then

    : elif [ 2 == "$?" ] then export SSH_AUTH_SOCK=${HOME}/.ssh/sock.`hostname` if ssh-add -l > /dev/null 2>&1 then : elif [ 2 == "$?" -a ! "$SSH_CLIENT" ] then rm -f ${SSH_AUTH_SOCK} eval `ssh-agent -a ${SSH_AUTH_SOCK}` fi fi ============ いいわけ ==================================================================================== ちょっと冗長に見えますが、僕は同じ bashrcを各serverにばら撒いているので、 sshのagentが転送されているかどうかを判断したりするロジックが入ってい るので、こんな書き方になっています。 eval `ssh-agent`な書き方とか、thenの字下げが、ちょっと時代を感じさせますね。多分 10年位前に書いた部分ですね。 どっかで書き直したいと思います。というか、今回の為に見直してて、なんでこんな書き方になっているのか、ちょっと自分でも悩みました。 おそらくこんな書き方しなくても良いはずですが、まー、若気の至りとい (ry
  4. bashrc (鍵追加部) # ssh-agentへkeyを追加 function keyadd { ssh-add -l |

    grep "mars" > /dev/null if [ 1 == "$?" ] then echo "ssh key add" ssh-add -t 180m ~/.ssh/id_dsa_mars fi }
  5. bashrcから各環境依存ファイル読み込み ls ~/misc-env/*.sh >/dev/null 2>&1 if [ $? -eq 0

    ]; then for f in ~/misc-env/*.sh;do . ${f} done fi なぜ.bashrcに書かないかというと、僕は.bashrc等 をgithubに上げている関係で、securityを考え、こ のように分離しています。
  6. ~/misc-env/livesense.sh function dev { #keyadd eval ${cocot} -p UTF-8 --

    ssh -AY [email protected] } function staging { eval ${cocot} -p UTF-8 -- ssh -AY [email protected] } ....... ....... function l-mnt-dev { sshfs -o follow_symlinks [email protected]:/home/websites ~/mnt/dev } function l-umnt-dev { umount ~/mnt/dev } -Aでagentの転送を行なっています。 -YはX windowを転送する為の設定です。 って、keyadd使ってないじゃないですかーーーーー。 どうもubuntuの(というかgnomeの)keyring managerとバッティングしちゃうんで、 今、ssh-agentは使っておらず、gnomeのkeyring managerを使ってる(はずで す。細かい調査してません。時間取れしだいやります。ごめんなさいごめんなさいご めんなさいごめんなさいごめんなさい。)