Putty の設定をファイルベースにしてポータビリティを上げて、プロジェクトごとに別管理

# 問題
* デフォルトでは、Putty の保存済みセッションの設定はレジストリに落ちている
    * ポータビリティが低い
* プロジェクトごとに設定一覧を分けたい場合に困る
    * プロジェクトごとに検証・ステージング・本番・CI 環境とかあると、過去のものが延々と混ざり続けて超邪魔なのです。
* (おまけ) Putty は接続先以外の細かい設定なんかも個別になってる


# 環境
* Windows 7 SP1 64bit
* PuTTY ごった煮版
    * putty-0.60-JP_Y-2007-08-06.zip


# 私のオススメ解決法
## 方針
* 設定は ini ファイルに落とす
* プロジェクトごとのディレクトリに、zip 版 Putty を複製して配置

## メリット
* 各プロジェクト内でたくさん接続先を増やしても混ざらない
* 環境移行や引き継ぎの時にディレクトリだけごそっと渡せる (個人の SSHKey やログファイルの容量には注意)
* ログの配置とか深く考えなくてよい
    * project/putty/log な方針。
    * log/project/putty な方針な人は・・・ テンプレートディレクトリ複製時に設定変えて対応？

## 手順
### Putty テンプレートディレクトリを作成
1. zip 版 Putty を解凍
1. 解凍したディレクトリ(putty.exe と同じ階層) に
    * putty.ini を配置
        * ここに接続設定のテンプレートを用意しておくと楽
    * log ディレクトリを作成

### プロジェクトが増えた時
1. テンプレートディレクトリごと複製
    * ログ・設定除くと 7MB 程度なので、ディスク容量とか気にしない方針で・・・
1. (おまけ)接続先を増やす場合は、接続設定のテンプレートを読み込み → 以下の設定を変更 → 保存、とすると楽
    * セッション名 【重要】
    * ホスト名/IPアドレス、ポート
    * 背景色の変更
        * プロジェクト別、検証/本番で、など切り替えると一目瞭然
    * SSH 鍵 (必要なら)
    * ポートフォワード (必要なら)



# putty.ini の例
デフォルト設定だと気に食わないので、個人的に好きな設定

```:putty.ini
[Generic]
UseIniFile=1

[Session:_template]
Present=1
HostName=""
LogFileName=".\log\&H_&Y&M&D_&T_puttyl.log"
LogType=1
LogFileClash=-1
LogFlush=1
SSHLogOmitPasswords=1
SSHLogOmitData=0
Protocol="ssh"
PortNumber=22
CloseOnExit=1
WarnOnClose=1
PingInterval=0
PingIntervalSecs=0
TCPNoDelay=1
TCPKeepalives=0
TerminalType="xterm"
TerminalSpeed="38400,38400"
TerminalModes="INTR=A,QUIT=A,ERASE=A,KILL=A,EOF=A,EOL=A,EOL2=A,START=A,STOP=A,SUSP=A,DSUSP=A,REPRINT=A,WERASE=A,LNEXT=A,FLUSH=A,SWTCH=A,STATUS=A,DISCARD=A,IGNPAR=A,PARMRK=A,INPCK=A,ISTRIP=A,INLCR=A,IGNCR=A,ICRNL=A,IUCLC=A,IXON=A,IXANY=A,IXOFF=A,IMAXBEL=A,ISIG=A,ICANON=A,XCASE=A,ECHO=A,ECHOE=A,ECHOK=A,ECHONL=A,NOFLSH=A,TOSTOP=A,IEXTEN=A,ECHOCTL=A,ECHOKE=A,PENDIN=A,OPOST=A,OLCUC=A,ONLCR=A,OCRNL=A,ONOCR=A,ONLRET=A,CS7=A,CS8=A,PARENB=A,PARODD=A,"
AddressFamily=0
ProxyExcludeList=""
ProxyDNS=1
ProxyLocalhost=0
ProxyMethod=0
ProxyHost="proxy"
ProxyPort=80
ProxyUsername=""
ProxyPassword=""
ProxyTelnetCommand="connect %host %port\n"
Environment=""
UserName=""
LocalUserName=""
NoPTY=0
Compression=0
TryAgent=1
AgentFwd=0
ChangeUsername=0
Cipher="aes,blowfish,3des,WARN,arcfour,des"
KEX="dh-gex-sha1,dh-group14-sha1,dh-group1-sha1,WARN"
RekeyTime=60
RekeyBytes="1G"
SshNoAuth=0
AuthTIS=0
AuthKI=1
SshNoShell=0
SshProt=2
SSH2DES=0
PublicKeyFile=""
RemoteCommand=""
RFCEnviron=0
PassiveTelnet=0
BackspaceIsDelete=1
RXVTHomeEnd=0
LinuxFunctionKeys=0
NoApplicationKeys=0
NoApplicationCursors=0
NoMouseReporting=0
NoRemoteResize=0
NoAltScreen=0
NoRemoteWinTitle=0
RemoteQTitleAction=1
NoDBackspace=0
NoRemoteCharset=0
ApplicationCursorKeys=0
ApplicationKeypad=0
NetHackKeypad=0
AltF4=1
AltSpace=1
AltOnly=0
AltMetaBit=0
CtrlTabSwitch=0
ComposeKey=0
CtrlAltKeys=1
RightAltKey=1
TelnetKey=0
TelnetRet=1
LocalEcho=2
LocalEdit=2
Answerback="PuTTY"
AlwaysOnTop=0
FullScreenOnAltEnter=0
HideMousePtr=0
SunkenEdge=0
IconFile=""
WindowBorder=1
CurType=0
BlinkCur=0
Beep=0
BeepInd=0
BellWaveFile=""
BellOverload=1
BellOverloadN=5
BellOverloadT=2000
BellOverloadS=5000
ScrollbackLines=2000
DECOriginMode=0
AutoWrapMode=1
LFImpliesCR=0
DisableArabicShaping=0
DisableBidi=0
WinNameAlways=1
WinTitle=""
TermWidth=100
TermHeight=60
Font="ＭＳ ゴシック"
FontIsBold=0
FontCharSet=0
FontHeight=10
FontQuality=0
FontVTMode=4
UseSystemColours=0
TryPalette=0
ANSIColour=1
Xterm256Colour=1
BoldAsColour=1
Colour0="64,64,64"
Colour1="0,0,0"
Colour2="222,222,222"
Colour3="85,85,85"
Colour4="0,0,0"
Colour5="0,255,0"
Colour6="0,0,0"
Colour7="85,85,85"
Colour8="187,0,0"
Colour9="255,85,85"
Colour10="0,187,0"
Colour11="85,255,85"
Colour12="187,187,0"
Colour13="255,255,85"
Colour14="0,0,187"
Colour15="85,85,255"
Colour16="187,0,187"
Colour17="255,85,255"
Colour18="0,187,187"
Colour19="85,255,255"
Colour20="187,187,187"
Colour21="255,255,255"
RawCNP=0
PasteRTF=0
MouseIsXterm=0
RectSelect=0
MouseOverride=1
Wordness0="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
Wordness32="0,1,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1"
Wordness64="1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2"
Wordness96="1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1"
Wordness128="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
Wordness160="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
Wordness192="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
Wordness224="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
LineCodePage="UTF-8"
CJKAmbigWide=0
UTF8Override=1
Printer=""
CapsLockCyr=0
Use5Casis=0
ScrollBar=1
ScrollBarFullScreen=0
ScrollOnKey=0
ScrollOnDisp=1
EraseToScrollback=1
LockSize=0
BCE=1
BlinkText=0
X11Forward=0
X11Display=""
X11AuthType=1
LocalPortAcceptAll=0
RemotePortAcceptAll=0
PortForwardings=""
BugIgnore1=0
BugPlainPW1=0
BugRSA1=0
BugHMAC2=0
BugDeriveKey2=0
BugRSAPad2=0
BugPKSessID2=0
BugRekey2=0
StampUtmp=1
LoginShell=1
ScrollbarOnLeft=0
BoldFont=""
BoldFontIsBold=4625248
BoldFontCharSet=5031352
BoldFontHeight=1
WideFont=""
WideFontIsBold=5031356
WideFontCharSet=4625248
WideFontHeight=0
WideBoldFont=""
WideBoldFontIsBold=4625232
WideBoldFontCharSet=5031356
WideBoldFontHeight=0
ShadowBold=0
ShadowBoldOffset=1
TransparentMode=0
Shading=0
UseAlphaBlend=0
StoppedToDraw=0
BackgroundImageFile=""
SerialLine="COM1"
SerialSpeed=9600
SerialDataBits=8
SerialStopHalfbits=2
SerialParity=0
SerialFlowControl=1
```


# 今後
* Vagrant ssh 時に Putty 起動できると捗る？
* けど会社は Teraterm 派っぽい予感・・・