SSH Tunnelling
SSH, the Secure Shell ဆိုသည္မွာ သင္၏ကြန္ပ်ဴတာႏွင့္ server ၾကား႐ွိ ဆက္သြယ္မႈကို encrypt ျပဳလုပ္ေပးသည္ standard protocol တစ္ခုျဖစ္သည္။ ထိုစကားဝွက္ျပဳလုပ္ျခင္း သည္ ဆက္သြယ္မႈမ်ားအား ၾကည့္႐ႈ႕ရျခင္း သို႔မဟုတ္ network operator မ်ားမွ ျပင္ဆင္ျခင္း တို႔ကိုကာကြယ္ေပးသည္။ SSH ကို စိတ္ခ်ရေသာ ဆက္သြယ္မႈ application အေျမာက္အမ်ား အတြက္ အသံုးျပဳသည္။ Server တစ္ခုသို႔ လံုျခံဳစြာ log-in လုပ္ျခင္းႏွင့္ file မ်ားကို လံုျခံဳစြာ transfer လုပ္ျခင္း (scp သို႔မဟုတ္ SFTP) တို႔သည္ အသံုး အမ်ားဆံုး ျဖစ္သည္။
Generic proxy client ကဲ့သို႔ အလုပ္လုပ္ႏိုင္ၿပီး Encrypted လုပ္ထားေသာ tunnel မ်ား provide လုပ္ႏိုင္ျခင္းေၾကာင့္ SSHသည္ ဆင္ဆာ ေက်ာ္လႊားရန္ အတြက္အလြန္ အသံုးဝင္သည္။ SSH သည္ ဆင္ဆာေက်ာ္လႊားရန္ တစ္ခုတည္းအတြက္ မဟုတ္ဘဲ အျခားေသာ ရည္႐ြယ္ခ်က္မ်ား အတြက္လည္း (ဥပမာ System administrator မ်ား မွ အင္တာနက္ေပၚ႐ွိ ၎တို႔၏ server မ်ား ကို ေစာင့္ၾကည့္ရန္ အသံုးျပဳၾကသည္။) အသံုးျပဳေသာေၾကာင့္ SSH ကို အၿမဲတမ္းပိတ္ဆို႔ထားရန္ မျဖစ္ႏိုင္ေပ။
SSH ကို အသံုးျပဳရန္ Unix သို႔မဟုတ္ Linux ကဲ့သို႔ ေသာ server မ်ိဳးေပၚတြင္ account တစ္ခု႐ွိရန္ လိုအပ္သည္။ ဆင္ဆာကိုေက်ာ္လႊားရန္ ၎ serverသည္ ပိတ္ဆို႔ထား ျခင္းမ႐ွိေသာ အင္တာနက္ (unrestricted internet access) ကိုလိုအပ္ၿပီး စိတ္ခ်ရေသာ လူျဖင့္လည္ပတ္ေစရန္ လိုအပ္သည္။ အခ်ိဳကုမၸဏီမ်ားသည္ ၎တို႔၏ server မ်ားေပၚတြင္ account မ်ား ေရာင္ၿပီး web hosting plan ေတာ္ေတာ္မ်ားမ်ား သည္ SSH access ကို ေပးသည္။ Shell account provider စာရင္းကို http://www.google.com/Top/Computers/Internet/Access_Providers/Unix_Shell_Providers/ တြင္ ရ႐ွိႏိုင္ၿပီး တစ္လလွ်င္ ၂ေဒၚလာမွ ၁၀ေဒၚလာအတြင္းက်သင့္ေသာ account မ်ားကို ဝယ္ယူႏိုင္သည္။
OpenSSH ဟုေခၚေသာ SSH program တစ္ခုကို Unix, Linux ႏွင့္ MacOS ကြန္ပ်ဴတာ ေတာ္ေတာ္ မ်ားမ်ား တြင္ “ssh” terminal မွ run ေနသည့္ command-line တစ္ခုအျဖစ္ install လုပ္ၿပီးသားျဖစ္ေနတတ္သည္။ Window မ်ားအတြက္ေတာ့ PuTTY ဟုေခၚေသာ အခမဲ့ SSH implementation ကို ရ႐ွိႏိုင္သည္။
SSH version ေတာ္ေတာ္မ်ားမ်ား သည္ Web browser မ်ားႏွင့္ SSH connection သံုး အျခား software ေတာ္ေတာ္မ်ားမ်ား ကို စီစစ္ျခင္းမ႐ွိသည့္ အင္တာနက္ အသံုး ျပဳေစႏိုင္ သည့္ SOCKS proxy အသံုးျပဳျခင္းကို လက္ခံသည္။ ယခု ဥပမာတြင္ SSH ၏အသံုးျပဳမႈကို သာ ေဖာ္ျပမည္ျဖစ္သည္။ local port 1080 တြင္ SOCKS proxy တည္ေဆာက္ပံုကို ေအာက္တြင္ ေဖာ္ျပလိုက္သည္။
Linux/Unix ႏွင့္ MacOS command line (OpenSSH ျဖင့္သံုးျခင္း)
OpenSSH ကို http://www.openssh.com/ တြင္ရ႐ွိႏိုင္ေသာ္လည္း Linux/Unix ႏွင့္ Mac OS ကြန္ပ်ဴတာမ်ား တြင္ install လုပ္ၿပီးသားအေနျဖင့္ လာသည္။
သင္အသံုးျပဳမည့္ ssh command တြင္ local port number (သာမန္အားျဖင့္ 1080), server name ႏွင့္ username (account name). ေအာက္ပါအတိုင္းျဖစ္သည္။
ssh -D localportnumber accountname@servername
ဥပမာ:
Password အသံုးျပဳရန္ သတိေပးခံရမည္ျဖစ္ၿပီး server ထဲသို႔ ဝင္ေရာက္သြားမည္ျဖစ္သည္။ -D option ကို အသံုးျပဳျခင္းျဖင့္ local SOCKS proxy တစ္ခုျဖစ္လာမည္ ျဖစ္ၿပီး သင္ server သို႔ ဆက္သြယ္ေနသေ႐ြ႕ တည္႐ွိေနမည္ျဖစ္သည္။ အေရးႀကီးေသာ အခ်က္တစ္ခုက ယခုအခါသင္သည္ host key မွန္ကန္ေၾကာင္းႏွင့္ ကို အတည္ျပဳႏိုင္ၿပီ ျဖစ္ၿပီး သင့္ application မ်ားကို ျပဳျပင္ ရန္ ျဖစ္သည္။ထိုသို႕မဟုတ္ လွ်င္ သင္ create လုပ္ထားေသာ tunnel ကို အသံုးျပဳေနျခင္းမဟုတ္ေၾကာင္းသိထားရမည္။
Windows graphical user interface (PuTTY ျဖင့္သံုးျခင္း)
PuTTY ကို http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html တြင္ ရႏိုင္သည္။
ေနာက္တစ္ခါအသံုးျပဳရန္ putty.exe program ကို သင့္ hard drive တြင္သိမ္းထားႏိုင္ၿပီး Website မွလဲ တိုက္႐ုိက္သံုးႏိုင္သည္။ (တစ္ခါတစ္ရံတြင္ စာၾကည့္တိုက္ သို႔မဟုတ္ အင္တာနက္ဆိုင္မ်ား မွ အမ်ားသံုး ကြန္ပ်ဴတာမ်ားေပၚတြင္ အသံုးျပဳ၍ရႏိုင္သည္။)
PuTTY ကိုစတင္အသံုးျပဳသည့္အခါ configuration dialog ေပၚလာလိမ့္မည္။ ပထမဦးစြာ သင္ ဆက္သြယ္မည့္ SSH server (ဥပမာ example.com) ၏ host name (address) ကို ရုိက္ထည့္ပါ။ အကယ္၍သင္သည္ IP address တစ္ခုတည္းကိုသာ သိသည္ သို႔မဟုတ္ DNS blocking မွ သင့္ အား host name အသုံးျပဳျခင္းကို တားျမစ္ထားသည္ဆိုလွ်င္ IP address ကိုသာ အသံုးျပဳႏိုင္သည္။ ထိုအဆင့္မ်ားကို မၾကာခဏ ျပဳလုပ္ေနမည္ဆိုလွ်င္ ထို option မ်ားႏွင့္ ေအာက္တြင္ေဖာ္ျပမည့္ option မ်ားကို မွတ္သားထားသည့္ သင့္စိတ္တိုင္းက် PuTTY profile တစ္ခုကို ရ႐ွိလိမ့္မည္။
ေနာက္တစ္ဆင့္မွာ Category list ထဲ႐ွိ Connection ကိုေ႐ြးပါ။ ထို႔ေနာက္ SSH, ထို႔ေနာက္ Tunnels
Source port အတြက္ 1080 ကိုထည့္ၿပီး “Dynamic” ႏွင့္ “IPv4” box မ်ားကို စစ္ပါ။
ယခု Add ခလုတ္ကို ႏွိပ္ပါ။ ထို႔ေနာက္ “Open” ကိုွႏွိပ္ပါ။ Server သို႔ connection ပို႔လႊတ္ၿပီး username ႏွင့္ password ျဖည့္ရန္ သတိေပးသည္ window အသစ္တစ္ခု ေပၚလာလိမ့္မည္။
ေဖာ္ျပထားေသာ သတင္းအခ်က္အလက္ကို ႐ိုက္ထည့္ပါ။ Server အတြင္းသို႔
သင္ေရာက္သြားလိမ့္မည္ ျဖစ္ၿပီး Server မွ သတိေပးသည့္ command line ကို
ရ႐ွိလိမ့္မည္။ ထို႔ေနာက္ SOCKS proxy ကို သင္ရ႐ွိလိမ့္္မည္။ သတိျပဳရန္-
Host key ကို verify လုပ္ရန္ႏွင့္ ကိုယ္သံုးမည့္ application မ်ားကိုလည္း
ျပင္ဆင္မွဳမ်ားျပဳလုပ္ရန္ လိုအပ္ပါသည္။ မလုပ္ပါက tunnel ကိုသံုးရာမေရာက္ပါ။
Host key ကို verify လုပ္ျခင္း
Server သို႔ပထမဦးဆံုး အႀကိမ္ဆက္သြယ္ခ်ိန္တြင္ ယင္း server အတြက္ host key fingerprint ကို အတည္ျပဳရန္ သတိေပးခံရမည္ျဖစ္သည္။ Host key fingerprint သည္ 57:ff:c9:60:10:17:67:bc:5c:00:85:37:20:95:36:dd ကဲ့သို႔ server တစ္ခုခ်င္စီအတြက္ သတ္မွတ္ထားသည့္ စာလံုးမ်ား ႏွင့္ ဂဏန္းမ်ား ေရာေထြးထားေသာ (hexadecimal) ဝါက် အရွည္ႀကီးျဖစ္သည္။ Host key fingerprint စစ္ေဆးျခင္းသည္ လံုျခံဳေရး ကိစၥတစ္ခုျဖစ္ၿပီး သင္သည္ အမွန္တကယ္ ဆက္သြယ္လိုေသာ server ႏွင့္ ဆက္သြယ္ေနေၾကာင္း ေသခ်ာ ရန္ႏွင့္ စကားဝွက္ျပဳ လုပ္ထား ေသာ ဆက္သြယ္မႈကို ၾကားျဖတ္ မေႏွာင့္ယွက္ ႏိုင္ေစရန္ ျဖစ္သည္။
SSH သည္ ထိုစစ္ေဆးျခင္းကို အလိုေလ်ာက္ ျပဳလုပ္ေပးမည္မဟုတ္ဘဲ ထို benefit ကို ရ႐ွိရန္ host key fingerprint ၏ တန္ဖိုးကို သင္အသံုးျပဳေနေသာ server ၏ administrator ျဖင္စစ္ေဆးျခင္း သို႔မဟုတ္ ယံုၾကည္ရေသာ လူတစ္ေယာက္ကို ထုိ sever သို႔ပဲဆက္သြယ္ရန္ ေတာင္းဆိုပါ။
Host key fingerprints ကို အတည္ျပဳျခင္းသည္ သင္၏ဆက္သြယ္မႈမ်ားကို ခိုးနားေထာင္သူမ်ား မွ SSH က ကာကြယ္ထားေၾကာင္း ေသခ်ာေစရန္ျဖစ္သည္။ သို႔ေသာ္ သင္သည္ ဆင္ဆာကို ေက်ာ္လႊားခ်င္႐ုံမွ်သာ ဆိုလွ်င္မလိုအပ္ေပ။ အကယ္၍ network operator မ်ားမွ သင့္ ဆက္သြယ္မႈမ်ား အေၾကာင္းကို ျမင္ႏိုင္ေနလွ်င္လည္းဂ႐ုစိုက္ ရန္မလိုေပ။
Applications မ်ားအား proxy သံုးရန္ ျပင္ဆင္ျခင္း
အထက္တြင္ေဖာ္ျပခဲ့သည္ အခ်က္မ်ားျဖင့္ တည္ေဆာက္ခဲ့ေသာ proxy သည္ သင္ SSH program ကို ပိတ္လုိက္သည္အထိ အလုပ္လုပ္ရမည္ျဖစ္သည္။ သို႔ေသာ္လည္း server သို႔ ဆက္သြယ္ေသာ သင့္ အဆက္အသြယ္မ်ား ေႏွာင့္ယွက္ခံရသည္ ဆိုလွ်င္ proxy ကို အသံုးျပဳရန္အတြက္ ေဖာ္ျပပါ အခ်က္မ်ားကိုပဲ ထပ္မံျပဳလုပ္ရမည္ျဖစ္သည္။
Proxy ကို တည္ေဆာက္ၿပီး၍ စတင္အသံုျပဳၿပီဆိုသည္ ႏွင့္တစ္ၿပိဳင္နက္ ၎ ကိုအသံုးျပဳရန္ software application မ်ားကို ျပဳျပင္ရန္လိုအပ္ၿပီျဖစ္သည္။ အထက္တြင္ေဖာ္ျပခဲ့သည့္ အခ်က္မ်ားကို အသံုးျပဳ ထားေသာ proxy သည္ localhost, port 1080 (127.0.0.1, port 1080 ဟုလည္းသိၾကသည္။) ေပၚတြင္တည္႐ွိသည့္ SOCKS proxy ျဖစ္သည္။ သင့္ application မ်ားကို DNS ယိုစိမ့္မႈမွ ကာကြယ္ၿပီးျဖစ္ေၾကာင္း ေသခ်ာရန္လိုအပ္သည္။ ၎သည္ privacy protection ႏွင့္ ဆင္ဆာေက်ာ္လႊားျခင္းႏွစ္ခု လံုးတြင္ SSH ကိုအားနည္းေစသည္။
အျခား options မ်ား
ဒီ command ေတြအကုန္လံုးက သင္ထိန္းခ်ဳပ္ႏိုင္ေသာ remote machine တစ္ခု ေပၚသို႔ command line မ်ား ေဖာ္ျပေပးသည္။ တစ္ခါတစ္ရံ remote machine ေပၚရွိ single command တစ္ခု ကို သင္ execute လုပ္ခ်င္လုပ္လိမ့္မည္။ ထိုသို႔ ျပဳလုပ္ခ်င္းကို remote machine ေပၚတြင္ single quotes မ်ား ေနရာခ်ာထားျခင္း ျဖင့္ ျပဳလုပ္ႏိုင္သည္။
$ ssh remoteusername@othermachine.domain.org 'mkdir /home/myname/newdir'
တစ္ခါတစ္ရံမွာ remote machine ေပၚတြင္ အခ်ိန္ကုန္ခ်င္းကို ေရွာင္ရွားရမည္ ျဖစ္ေသာ္လည္း သင့္ လက္ရွိ ssh session တြင္ အခ်ိန္အလံုအေလာက္ ရွိမရွိကို မေသခ်ာျဖစ္တတ္သည္။ command execution မၿပီးခင္ remote connection အားပိတ္လိုက္လွ်င္ ထို command သည္ abort ျဖစ္သြားလိမ့္မည္။ ထိုသို႔ သင့္ အလုပ္မ်ား ဆံုးရႈံးျခင္းမွ ကာကြယ္ရန္ ssh remote screen session တစ္ခုမွ စတင္သံုးသင့္ၿပီး ေနာက္ ၎ကို detach လုပ္ကာ သင္ျပန္သံုးျခင္ေသာ အခ်ိန္တြင္ reconnect လုပ္သင့္သည္။ remote screen session ကို detach လုပ္ရန္ ssh connection ကိုိပိတ္ပစ္ရမည္။ remote machine ေပၚတြင္ detach လုပ္လိုက္ေသာ screen session မွာ ဆက္လက္ run ေနမည္ျဖစ္သည္။
Ssh မွ အျခားေသာ option မ်ားကိုလည္းေပးထားၿပီး ၎တို႕ကို manual page ေပၚတြင္ေဖာ္ျပထားသည္။ သင့္စိတ္ႀကိဳက္ system မ်ားကို လည္း set up လုပ္ႏိုင္ၿပီး ထိုသို႔လုပ္ျခင္းအားျဖင့္ အခ်ိန္တိုင္းတြင္ password ရိုက္ထည့္ေနရန္မလိုပဲ log in လုပ္ျခင္း သို႔မဟုတ္ command မ်ားကို run ျခင္းတို႔အားျပဳလုပ္ႏိုင္သည္။ ထို set up သည္ ရႈပ္ေထြးေသာ္လည္း သင့္ အားစာအမ်ားႀကီး ရိုက္ရျခင္းမွ ကာကြယ္ေပးႏိုင္သည္။ “ssh-kyegen” “ssh-add” “authorized _keys” စသည္တို႔ကို web search လုပ္ၾကည့္ပါ။
scp: file ကူးယူျခင္း
SSH protocol သည္ အေျခခံ ssh command မ်ားထက္ ေက်ာ္လြန္သည္။ အသံုးဝင္ ၿပီး အသံုးမ်ားသည့္ SSH protocol ေပၚတြင္ အေျခခံထားသည့္ command တစ္ခုက ေတာ့ scp, secure copy command ျဖစ္သည္။ ေဖာ္ျပပါ example သည္ သင့္ local machine ေပၚရွိ လက္ရွိ directory မွ remote machine ေပၚရွိ /home/me/stuffe သို႔ကူးယူျခင္းျဖစ္သည္။
$ scp myprog.py me@othermachine.domain.org:/home/me/stuff
သင္သည္ ထို command မွ /home/me/stuff/myprog.py. နာမည္ျဖင့္ ရွိၿပီးသား file မ်ားအားလံုးကို overwrite လုပ္မည္ဆိုေသာ သတိေပးခ်က္ကို ေတြ႕ျမင္ရမည္ျဖစ္သည္။ သို႔မဟုတ္ ထိုနာမည္ျဖင့္ file ရွိေနၿပီး သင့္တြင္ overwrite လုပ္ရန္ အခြင့္မရွိလွ်င္ error message ကိုေတြ႕ျမင္ရမည္ျဖစ္သည္။အကယ္၍ /home/me သည္ သင့္ Home directory ျဖစ္ေနလွ်င္ target directory ကို abbreviate လုပ္ႏိုင္မည္ျဖစ္သည္။
$ scp myprog.py me@othermachine.domain.org:stuff
Remote machine မွ သင့္ local machine ေပၚသို႔ အျခား direction တစ္ခုကို အလြယ္တကူပင္ copy လုပ္လိုက္ႏိုင္သည္။
$ scp me@othermachine.domain.org:docs/interview.txt yesterday-interview.txt
Remote machine ေပၚရွိ file သည္ သင့္ home directory ၏ doc subdirectory ထဲတြင္ interview.txt ျဖစ္သည္။ ထို file သည္ သင့္ local system ၏ Home directory ထဲတြင္ yesterday-interview.txt အျဖစ္ ကူထား ခံရလိမ့္မည္။
Scp ကို remote machine တစ္ခု မွ တစ္ခုသို႔ file copy လုပ္ရာတြင္ အသံုးျပဳသည္။
$ scp user1@host1:file1 user2@host2:otherdir
To recursively copy all of the files and subdirectories in a directory, use the -r
option.
File မ်ား subdirectory မ်ားအားလံုးကို ကူးယူရန္ -r option ကိုသံုးပါ။
$ scp -r user1@host1:dir1 user2@host2:dir2
ပိုမိုမ်ားေသာ option မ်ားကို scp man page တြင္ၾကည့္ႏိုင္သည္။
rsync: bulk transfers ႏွင့္ backups မ်ား အလိုအေလွ်ာက္ျပဳလုပ္ျခင္း
Rsync ဆိုသည္မွာ remote directory ႏွင့္ local directory တို႔အား sync အေျခအေနတြင္ရွိေနရန္ ကူညီသည့္ အလြန္အသံုးဝင္သည့္ command တစ္ခုျဖစ္သည္။ ၎ကိုေဖာ္ျပရျခင္းမွာ ssh ကဲသို႔ networking မ်ားအတြက္ အသံုးဝင္သည့္ command-line တစ္ခုျဖစ္ၿပီး SSH protocol သည္ rsync ၏ underlying transmission အေနျဖင့္ recommend လုပ္ခံရေသာေၾကာင့္ျဖစ္သည္။
ေဖာ္ျပပါ example မွာ ရိုးရွင္းၿပီး အသံုးဝင္သည့္ example တစ္ခုျဖစ္သည္။ ၎သည္ သင့္ local /home/myname/docs directory မွ file မ်ားကို quantum.example.edu. system ေပၚရွိ backup/ အမည္ရွိ သင့္ home directory ေပၚသို႔ကူးယူေပးသည္။
$ rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/
-e option သည္ recommend လုပ္ထားသည့္အတိုင္း ssh သည္ SSH protocol ကို transmission အတြက္ underneath အေနျဖင့္အသံုးျပဳျခင္းျဖစ္သည္။ a option ( archive ) ကေတာ့ specified directory အတြင္းရွိ ရွိသမွ် file ကို copy လုပ္သည္။ local system ေပၚရွိ copy လုပ္ခံထားရေသာ file မ်ားကို delete လုပ္လိုလွ်င္ a—delete option ကိုထည့္သြင္းပါ။ rsync အေၾကာင္းႏွင့္ အေသးစိတ္သိလိုလွ်င္ rsync manul page ကိုဖတ္ပါ။
SSH ကိုလြယ္လင့္တကူ အသံုးျပဳျခင္း
အကယ္၍သင္သည္ ေျမာက္မ်ားစြာေသာ server မ်ားအား connect လုပ္ရန္ SSHကို အသံုးျပဳေနသည္ဆိုလွ်င္ တစ္ခါတစ္ရံမွာ username သို႕မဟုတ္ host name မ်ားကို မွားရိုက္မိတတ္ပါတယ္။ (username/host combinations အခု၂၀ေက်ာ္ေလာက္ မွတ္ထားရ မည့္အေျခအေနကို စဥ္းစားၾကည့္ပါ။)။ ကံေကာင္းေထာက္မစြာပဲ SSH မွ configuration file တစ္ခုမွတစ္ဆင့္ session information ကို manage လုပ္ေသာ method ကုိ offer လုပ္ထား သည္။
Configuration file ဟာ directory .ssh ေအာက္မွာရွိတဲ့ သင္၏ home directory ထဲတြင္ hidden လုပ္ခံထားရပါတယ္။ (path အျပည့္အစံုဟာ /home/jsmith/.ssh/config ဆိုၿပီး ျဖစ္ေနပါလိမ့္မယ္။ တစ္ကယ္လို႕အဲ့ဒီ file မရွိဘူးဆိုရင္လည္း create လုပ္လို႕ရပါတယ္။) အဲ့ဒီ file ကိုဖြင့္ဖို႕ သင့္စိတ္ႀကိဳက္ editor ကိုသံုးၿပီး host ကုိေအာက္ပါအတိုင္း specify လုပ္ပါ။
Host dev HostName example.com User fc
ထိုသို႕ေသာ multiple hosts မ်ားကို သင္၏ configuration file ထဲတြင္ set up လုပ္ႏိုင္သည္။ Save လုပ္ၿပီးၿပီဆိုရင္ေတာ့ “dev” လို႕ေခၚတဲ့ host ကို ေအာက္ပါ command ကို run ၿပီး ဆက္သြယ္ႏိုင္သည္။
$ ssh dev
သတိၿပဳရန္မွာ ထို command မ်ားကို မ်ားမ်ားသံုးေလ save မ်ားမ်ားလုပ္ရန္လိုေလျဖစ္သည္။