夿®µssh, å¼·å¶ãªãã¼ã - 第äºåFreeBSDåå¼·ä¼ã¸è¡ã£ã¦ãã¾ãããå 容編ã
ãã¦ã前回会場に行くまでのチラ裏的内容ã§ããã®ã§ãä»åã¯å
容ã«è§¦ãã¦ã¿ããã¨æãã¾ãã
ä»åã®å
容ã¯ã勉強会のページã®éãã1æéåã®æ¡å¤§çã§å
¥éã¬ãã«ããçºå±ã¬ãã«ã¾ã§ã«ãã¼ãããªã¢ã¼ã管çã®ãã¦ãã¦ã«ã¤ãã¦ã§ããã
FreeBSDåºæã®ãã®ã¨ãããããã¯ããµã¼ã管çå
¨è¬ã«è¨ããå
容ã§ããã®ã§ã*BSDç³»ã«éãããµã¼ã管çãè¡ããã¦ããæ¹ã«ã¨ã£ã¦ã¯éå¸¸ã«æçãªæ
å ±ãã¨æãã¾ããä»åã®åå¼·ä¼è³æãå
¬éãããããæ¯éç®ãéãã¦ã¿ãäºããããããã¾ãã
å 容ã¯
ヨタの日々ããã®æ¥è¨ã«ãè©³ç´°ã«æ¸ããã¦ãã¾ããã大ã¾ãã«ä»¥ä¸ã®ã¨ããã§ããã
ãªããä»åã¯ä»¥ä¸ã®ä¸ããsshã«ã¤ãã¦(ssh-agentã«ã¤ãã¦)ã¨ãä½ã¨ããµã¼ããç¡çãããªãã¼ããããæ¹æ³(ãããã°ãªãã·ã§ã³æå¹)ã«ã¤ãã¦æ¸ãããã¨æãã¾ãã
- sshã«ã¤ãã¦
- ã·ãªã¢ã«ã³ã³ã½ã¼ã«ã®æ´»ç¨
- sshã使ããªãã£ãããæ¬¡ã«ããã試ã
- ãã¼ããã¼ãããå¶å¾¡ã§ãã
- OSãreboot/shutdownå½ä»¤ãåãä»ããªãæã«ã¯ãããçµç±ã§ç¡çãããªãã¼ã
- æ¥ç¶ã®ç®¡ç
- ã·ãªã¢ã«ã³ã³ã½ã¼ã«ã¯ãã¢ããã°ã¢ãã ç¨ãã¤ã¢ã«ã¢ããã¢ãã ãæ´»ç¨ããã¨ããã¦çºããã
- ã·ãªã¢ã«æ¥ç¶ã®ããã¨ãã¦æ´»ç¨ãä¸å¤ã®æãä¸ãåã§3ã4ä¸ç¨åº¦(portmasters.com)
- sshã ã¨ãtelnetã ã¨ãã·ãªã¢ã«ã ã¨ããconserverã使ãã°æèããã«ä½¿ãã
- ã·ãªã¢ã«ã³ã³ã½ã¼ã«ã¯ãã¢ããã°ã¢ãã ç¨ãã¤ã¢ã«ã¢ããã¢ãã ãæ´»ç¨ããã¨ããã¦çºããã
- IPMIã«ã¤ãã¦
- ãã¼ãã¦ã§ã¢å¶å¾¡ã§ãè²ã ã§ãã
- 黿ºON/OFFãLANçµç±ã§ããã¤ã³ã³å¶å¾¡ã
- å®å®ããªããµã¼ãã§ããä½ã¨ãç¡çããéç¨ãããï¼
- watchdog timerã使ã£ã¦ãã·ã¹ãã ãåºãã£ããèªåã§ãªãã¼ãããããã«ãã¦ãã(æçµææ®µ)
sshã
ãªã¢ã¼ã管çã«ç¡ãã¦ã¯ãªããªãsshããµã¼ããé éæä½ããã¨ãã«ãã¾ãã®ãã®sshã使ãããã©ããã£ã¦ã®ããåé¡å¯¾å¦ã®ä¸ã¤ã®ç®å®ã¨ãªãã¾ãã
ããã§æ°ãã¤ããªããã°ãªããªãã®ã¯ãsshã®ã»ãã¥ãªãã£ãéµã®æ±ãããããªããªäººãå¤ãããã§ãã
è¨ãã¾ã§ããªãã§ãããsshèªè¨¼ã«ã¯éµãäºã¤ãã£ã¦
- ãã©ã¤ãã¼ãéµ
- æ¼ããã¡ãé§ç®ï¼
- ãããªãã¯éµ
- ããã¯ãã©ã¾ãã¦ãk
ãã®ããããªãã¯éµãããã¦ãããµã¼ãã«ãã©ã¤ãã¼ãéµãç¨ãã¦ã¢ã¯ã»ã¹ãã«è¡ãã¨ãèªè¨¼ãè¡ããã¦sshã§æ¥ç¶ãåºæ¥ãã¨ãã訳ã§ãã
ãã©ã¤ãã¼ãéµã¨ããã®ã¯ãçã¾ãããããªãããã«ããã³ã¨ç®¡çããªããã°ãªãããã¾ãããã¿ã«ã³ãã¼ãã¦è¤è£½ãä½ã£ã¦ã¯ããã¾ãããæ°ãå¢ããã°å¢ããç¨ã管çãè¡ãå±ããªããªã£ã¦ãã¾ãã¾ãããçã¾ããå±éºæ§ãå¿è«å¢ãã¦ãã¾ãã¾ãã
ãã¦ãã§ã¯ä»¥ä¸ã®ãããªå ´åã«ã¯ã©ããããè¯ãã§ããããã
èªåèªèº«ã¯ç¾å¨è¨ç®æ©Aãå©ç¨ãã¦ãããããã¦ãè¨ç®æ©Cã¸ã¨æ¥ç¶ãããã +-------+ +-------+ +-------+ | | | | | | |è¨ç®æ©A| => |è¨ç®æ©B| => |è¨ç®æ©C| | | | | | | +-------+ +-------+ +-------+ 注ï¼è¨ç®æ©Aããè¨ç®æ©Cã¸ã¯ç´æ¥sshã§æ¥ç¶ã§ããªã
ãã®ã¨ãããBã«Cã¸ã®æ¥ç¶ã«ç¨ãããã©ã¤ãã¼ãéµãç½®ãã°è¯ããã¨èãã人ãå¤ãã¨æãã¾ãããå ã«ãç³ããã¨ããããã©ã¤ãã¼ãéµãå¢ããã®ã¯å¥½ã¾ãããªããã§ããããã§ç»å ´ããã®ãssh-agentã§ãã
ssh-agentã£ã¦ï¼
ssh-agentã¯ååããåããããã«ã¨ã¼ã¸ã§ã³ãã代ç人ã¨ãã¦åãã¾ããæµãã¨ãã¦ã¯ã
- èµ·åãã¦
- éµãç»é²ããã¨
- ãã©ã¤ãã¼ãéµãã¡ã¢ãªã«æ ¼ç´ãã¦
- sshã¯ã©ã¤ã¢ã³ãããã®åãåããã«çãã
ã¨ãã£ããã®ã§ãã
ããã«ããããã©ã¤ãã¼ãéµã«æãããã¹ã¯ã¼ãã®å
¥åãçãããããªã©ãé常ã«ä¾¿å©ã«sshãå©ç¨ã§ããããã«ãªãã®ã§ããããã¦ãããç¨ããã¨ãsshæ¥ç¶ã®å
ã§ã®ssh - 夿®µsshã§ã®éµèªè¨¼ã便å©ã«ãå®å
¨ã«ãªãã¾ãã
ssh-agent forwardingã®ä»çµã¿ã
ããã§ãssh-agent forwardingãå©ç¨ããã¨èãã¦ã¿ã¾ãã
è¨ç®æ©Aããè¨ç®æ©Bã¸ã¨ã¨ã¼ã¸ã§ã³ããå©ç¨ãã¦è¨ç®æ©Bã«æ¥ç¶ãã¦ããç¶æ
ãæ³å®ãã¾ãã
è¨ç®æ©Bããè¨ç®æ©Cã¸æ¥ç¶ãããã¨ããã¨ãèªè¨¼ã®è¦æ±ãè¨ç®æ©Bä¸ã®ä»£çã¨ã¼ã¸ã§ã³ãã«éããã¾ãããã®è¨ç®æ©Bä¸ã®ä»£çã¨ã¼ã¸ã§ã³ãã¯ãéµã®èªè¨¼è¦æ±ãè¨ç®æ©Aã®ã¨ã¼ã¸ã§ã³ãã«ãªã¬ã¼ãã¦ããã®çµæãåãåãã¾ãã

ãã®ããã«åä½ãããã¨ãããè¨ç®æ©Bä¸ã¸è¨ç®æ©Cã¸ã®ãã©ã¤ãã¼ãéµãç½®ããã¨ãªããè¨ç®æ©Cã¸ã¨éµèªè¨¼ãããã¨ãå¯è½ã¨ãªãã¾ãã
å®éã«ä½¿ã£ã¦ã¿ãã
ã§ã¯ãå®éã«ä½¿ã£ã¦ã¿ã¾ãããã
- èµ·åããã
ã¾ããè¨ç®æ©Aã§ssh-agentãç«ã¡ä¸ãã¾ãã以ä¸ã®ã³ãã³ããå®è¡ãã¦ä¸ããã
$ eval `ssh-agent` Agent pid 25366
ããã«ãããssh-agentãèµ·åãã¾ãããªããä¸è¨ã³ãã³ãã§ã¯ã·ã³ã°ã«ã¯ã©ã¼ãã¼ã·ã§ã³ã§ãªãããã¯ã¯ã©ã¼ãã¨ããç¹ã«æ³¨æãã¦ä¸ãããããã¯ã¯ã©ã¼ãã¯Pãã¼ã®å³ã¨ãªãã@ãã¼ãShiftã¨åææ¼ããããã¨ã«ããå
¥ååºæ¥ã¾ã(æ¥æ¬èªé
åã®å ´å)ã
ãã¦ãããã§evalã§å®è¡ãã¦ãããã¨ã«æ°ã«ãªãã§ããããevalã§å®è¡ãããã¨ã«ãããssh-agentãåºåããå
容ãã³ãã³ãã¨ãã¦å®è¡ãã¦ãã訳ã§ãããããã¯ssh-agentã使ãéã«å¿
è¦ãªç°å¢è¨å®ãè¨å®ããããã§ããå®éã«ãevalãããå®è¡ããã¨ä»¥ä¸ã®ãããªçµæã¨ãªãã¾ãã
$ ssh-agent setenv SSH_AUTH_SOCK /tmp/ssh-YkIlsV2Dby/agent.25365; setenv SSH_AGENT_PID 25366; echo Agent pid 25366;
- éµãç»é²ãã
ãã¦ã代çã§èªè¨¼ããã£ã¦ãããã¨ãããã¨ãªãã°ããã©ã¤ãã¼ãéµã¨ãã®ãã¹ã¯ã¼ããã¨ã¼ã¸ã§ã³ãã«é ããªããã°ãªããªãã§ããããã®æ¹æ³ã¯ä»¥ä¸ã®éãã¨ãªãã¾ãã
$ ssh-add Enter passphrase for /Users/m-bird/.ssh/id_rsa: Identity added: /Users/m-bird/.ssh/id_rsa (/Users/m-bird/.ssh/id_rsa)
ssh-agentã§ã¯ãè¤æ°ã®éµãç»é²ãããã¨ãå¯è½ã§ããããã©ã«ãã®éµ(.ssh以ä¸ã«ç½®ãããéµ)以å¤ãç»é²ããå ´åã¯ã弿°ã«éµã¾ã§ã®ãã¹ãæç¤ºãã¦ããã¾ãã
$ ssh-add .key/server2.key Enter passphrase for .key/server2.key: Identity added: .key/server2.key (.key/server2.key)
確èªãã¦ã¿ã¾ãããã-lãªãã·ã§ã³ã«ã¦ãéµã®ãã£ã³ã¬ã¼ããªã³ãã¨å ±ã«ãç¾å¨èªã¿è¾¼ã¾ãã¦ããéµã表示ããã¾ãã
$ ssh-add -l 2048 01:01:01:01:01:01:01:01:01:01:01:01:01:01:01:01 /Users/m-bird/.ssh/id_rsa (RSA) 2048 02:02:02:02:02:02:02:02:02:02:02:02:02:02:02:02 .key/server2.key (RSA)
éµã®ç»é²ãå¤ãã«ã¯ã-dãªãã·ã§ã³ã§ãã弿°ç¡ãã ã¨ãããã©ã«ãã®éµãç»é²åé¤ããã¾ãã
$ ssh-add -d Identity removed: /Users/m-bird/.ssh/id_rsa (/Users/m-bird/.ssh/id_rsa.pub)
éµã®ç»é²æ¸ãã°ããã¤ãéãsshã³ãã³ããå®è¡ããã¨ããã¹ãã¬ã¼ãºã®è¦æ±ãªã©ç¡ãã«æ¥ç¶ã§ããããã«ãªãã¾ãã
- forwardingããã
ãã¦ãããã§æ¬æ¥ã®ç®çã®ãéµãç½®ããã®å¤æ®µè¸ã¿ãã§ãã
ãããããã«ã¯ãssh-agentãèµ·åãã¦ããã¯ã©ã¤ã¢ã³ããã·ã³ãä¸ã®ä¾ã§è¨ãè¨ç®æ©Aã®sshã¯ã©ã¤ã¢ã³ãã§ä»¥ä¸ã®ãªãã·ã§ã³ãæå¹ã«ããå¿
è¦ãããã¾ãã~.ssh/configã使ãã¦æ¸ãè¾¼ãã§ä¸ããã
ForwardAgent yes
ã¾ãã~.ssh/configã使ããªãã¨ãã以ä¸ã®ããã«sshã§æ¥ç¶ããéã«å¼æ°ã§æ¸¡ããã¨ãå¯è½ã§ããè¨ç®æ©Aããè¨ç®æ©Bã¸ã¨æ¥ç¶ããéã«ã以ä¸ã®ããã«ã³ãã³ã弿°ã渡ãã¦ãã£ã¦ä¸ããã
[keisankiA]$ ssh -o "ForwardAgent yes" m-bird@keisankiB
ããã§ãè¨ç®æ©Bã«ãã©ã¤ãã¼ãéµãç½®ããã¨ãè¨ç®æ©Cã¸ã¨ã¢ã¯ã»ã¹åºæ¥ãããã«ãªãã¾ãã
çµäºæ¹æ³
ãã¦ãããã§åã®è¯ãäººã¯æ°ã¥ããããããã¾ããããssh-agentãçµäºããã¨ããç°å¢å¤æ°ãåé¤ããªããã°ãããªããããé¢åãããã®éãã§ãã
ããããssh-agentã«ã¯ä¾¿å©ã«çµäºããæ¹æ³ãããã¾ãããããã-kãªãã·ã§ã³ã§ããä¾ã«ãã£ã¦ãevalã§å®è¡ãã¾ãã
$ eval `ssh-agent` Agent pid 25366 $ eval `ssh-agent -k` Agent pid 25366 killed
ã¾ããä¸ã¤ssh-agentã使ãéã«ã¯æ°ãã¤ããããã¨ãããã¾ããããã¯ããã°ã¢ã¦ãæã«ssh-agentãçµäºããªããã¨ã§ããããã¯.logoutãã¡ã¤ã«ãåã¯.profileãã¡ã¤ã«ã«ã¦å¯¾å¦ãã¾ãããã以ä¸ã®å å®¹ãæ¸ãè¾¼ãã§ä¸ããã
- tcshçã®Cã·ã§ã«ç³»(~/.logout)
if ( "$SSH_AGENT_PID" != "" ) then eval `ssh-agent -k` endif if ( "$SSH2_AGENT_PID" != "" ) then kill $SSH2_AGENT_PID endif
- bashçã®bourneã·ã§ã«ç³»(~/.profile)
trap ' test -n "$SSH_AGENT_PID" && eval `ssh-agent -k`; test -n "$SSH2_AGENT_PID" && kill $SSH2_AGENT_PID ' 0
ããã§ãssh-agentã大éã«èµ°ã£ã¦ããï¼ã¨ããåé¡ããã¯è§£æ¾ããã¾ããï¼
zshã¯ãããå¤åã©ã£ã¡ã§ãè¡ããããããªããã§ãããï¼åããã¾ããï¼ï¼ï¼
ããä¸ã¤ã®å®è¡æ¹æ³ããµãã·ã§ã«ã使ç¨ããæ¹æ³
以ä¸evalã使ã£ãæ¹æ³ããã ãã ã¨æ¸ãé£ãã¦ãã¾ãããããã£ã¨åç´ãªæ¹æ³ãããã¾ããããã¯ããµãã·ã§ã«ãå®è¡ããæ¹æ³ã§ãã
$ ssh-agent $SHELL
ã¨æã¤ã ãã®ç°¡åãªãä»äºã§ããããããã¨ã«ããç°å¢å¤æ°ãªã©ãã»ãããããµãã·ã§ã«ãç«ã¡ä¸ããã¾ã*1ãããããäºã«ããããã°ã¢ã¦ãæãªã©ã¯ãµãã·ã§ã«ã®ããã»ã¹ã殺ãããssh-agentã®ããã»ã¹ãæ»ã«ã¾ãã®ã§ãä¸ã®æ§ãªé¢åãªä½æ¥ã¯å¿
è¦ããªããªãã¾ãã
ããã§æ°ãã¤ãããã®ã¯ãããã®æ¹æ³ãæ¡ããªãã°ãçã£å
ã«"ssh-agent $SHELL"ã¨ããã³ãã³ããå®è¡ãããã¨ãããã¨ã§ããããã§ãªãã¨ããµãã·ã§ã«ãç«ã¡ä¸ããåã«ããã¯ã°ã©ã¦ã³ãã«ç§»ããããã»ã¹ã®ã»ãã·ã§ã³ã«è§¦ããªããªã£ãããã¦ãã¾ãã¾ãã
$ vim tani # vimèµ·å ^Z # vimã䏿忢 $ ssh-agent $SHELL # ãµãã·ã§ã«ãå®è¡ï¼ $ jobs # ããã»ã¹ç¢ºèªãvimãè¦ããªãï¼ $ exit # ãµãã·ã§ã«çµäº $ jobs # ãã£ããããã»ã¹ç¢ºèª [1] + Suspended vim tani
ã¨ãã訳ã§ã.loginã ã¨ã.profileã«æ¸ãã¦ããã¹ãã§ãããã
- åèãªã³ã¯ãè³æ
ssh-agent forwardingã®å±éºæ§
ããããããã§æ°ã«ãªã£ã¦ããã®ãè¸ã¿å°ãµã¼ãã®ä¿¡é ¼æ§ã§ãã
ä¸ã®ä¾ã§ãè¨ç®æ©Bã«ã¤ãã¦root権éãããã°ãè¨ç®æ©Aã®ssh-agentãå©ç¨ã§ãã¦ãã¾ãã¾ããããã¯ãè¨ç®æ©Aã«ç½®ããç§å¯éµããã¹ãã¬ã¼ãºç¡ãã§å©ç¨ããã¦ãã¾ãã®ã¨å義ã§ãã
ssh-agentã«æãå ãã¦ãã°åºåãããèªåã®ssh-agentãåæã«ä½¿ããã¦ããªããç£è¦ããæ¹æ³ãããããã§ããããããroot権éãçãåºãããããªããªãã®ã§ã
- ä¿¡ç¨ãªããªãè¨ç®æ©ãè¸ã¾ãªã
- æå³ããªãè¸ã¿å°ã«ãããã·ã³ãå¢ãããªã
- ç§å¯éµã使ãã¾ãããªã
ã¨ãã£ã対çãå¿
è¦ã§ãããã
ãã®ä»¶ã«ã¤ãã¦ã¯ä»¥ä¸ã®ãã¼ã¸ãé常ã«è©³ããã®ã§ã詳細ãç¥ããã人ã¯ä½µãã¦ã©ããã
- åèãªã³ã¯
ãããã°ãªãã·ã§ã³ã§ãªãã¼ããããï¼
ãã¦ãsshã使ããªãå ´åã«ããã§ããªãã¼ãããããã ã¨ããããããä½ããã®åå ã§reboot/shutdownã³ãã³ããå®è¡ãããªãå ´åãªã©ãããã§ãããã
ãããªæã¯ã©ãããã°ããã§ãããããç°¡åã§ãããããã¬ã«ãããè½ã¨ãã¦ãããã§rebootã³ãã³ããå©ãã°ãããã§ãããããã¬ã«è½ã¡ã¦ãã·ãªã¢ã«ã³ã³ã½ã¼ã«ãªãæä½åºæ¥ã¾ããããããã
ã¨ããããã§ã以ä¸ã®ãããã°ãªãã·ã§ã³ãã«ã¼ãã«ã³ã³ãã£ã°ãã¡ã¤ã«ã«æ¸ãå ãã¦ããã¾ãããã
options DDB
options KDB
options GDB
options ALT_BREAK_TO_DEBUGGER # <= ã¨ã¹ã±ã¼ããã¼ã®è¨å®ãman 4 ofw_console
options KDB_UNATTENDED
以ä¸ã®ãªãã·ã§ã³ã§æ§ç¯ããã«ã¼ãã«ã®å ´åã[CR][~][^b]ã§breakããããddbããã³ããã¸ã¨è½ã¡ã¾ããpanicãã¦ããddbã«è½ã¡ã¾ããã¨ãã訳ã§ãddbã®ããã³ããã§rebootãã¦ããã°ãã¨ããããã¯å¸°ã£ã¦ãã¾ãããã£ããâ
ãªãããã«ã¼ãã«ã³ã³ãã£ã°ã¨ãããããã¼ãï¼ãã£ã¦æ¹ã¯ã以ä¸ã®ãã³ãããã¯ãåèã«ãã¦ãã ããã
æå¾ã«ææ³ãªã©
ä»åã®ã¹ãã¼ã«ã¼ã¯æ±äº¬çç§å¤§ã®ä½è¤åºçæ°ã§ãããããããéå¸¸ã«æ¥½ããã§èããã¨ãã§ãã¾ããã
ããããä»åã¯æè¦ªä¼ãç¡ãã¨ãããã¨ã§ãåå¼·ä¼çµäºå¾ããã«çãã帰ããã¦ãã¾ã£ã¦ãä»ã®åå è
ããã¨ã®äº¤æµãåºæ¥ãªãã¦æ®å¿µã§ãã(彿¥ã«æ
ã¦ã¦ååºä½ã£ã¦è¡ã£ãã®ã ããã©......(æ³£))次åã¯æ¯éã交æµãããï¼ã¨ãããã¨ã§ãã¾ãããããã®åå¼·ä¼ã®æ½é¸ã«ãå¿åãã¦ããããã¨æãã¾ãããããä¼å ´ã§ãä¼ãããäºã«ãªã£ãæã«ã¯ãå®ãããé¡ããã¾ããï¼