2010年9月14日星期二

SSH 小技巧

  • 提昇連線效率
  • 一行指令連入遠端區域網路內的其他主機
  • SOCKS 代理伺服器
  • SSH Tunnel
  • SSH 與 Pipeline 應用
    • 免密碼登入
    • 壓縮傳遞
    • 備份遠端 mysql 資料庫
    • 備份到遠端主機
    • 在本地還原備份資料
    • 傳送麥克風聲音到遠端主機喇叭

保持連線

vi ~/.ssh/config

KeepAlive yes
ServerAliveInterval 60

chmod 600 ~/.ssh/config

提昇連線效率

mkdir ~/.ssh/connections
chmod 700 ~/.ssh/connections
vi ~/.ssh/config

Host *
ControlMaster auto
ControlPath ~/.ssh/connections/%r_%h_%p

風險: 連線中, 再另外連入相同的 帳號@主機 將不再詢問密碼.

一行指令連入遠端區域網路內的其他主機

ssh -t someone@remote.host 'ssh someone@192.168.1.1'

SOCKS 代理伺服器

僅允許本機連線

ssh -f -N -D1080 someone@remote.host

於瀏覽器設定 SOCKS Host: localhost:1080
並瀏覽 http://whatismyip.com/ 查看自己的 IP 是否為遠端 sshd 主機的外部 IP

允許其他人連線

ssh -f -N -D 0.0.0.0:1080 someone@remote.host

於瀏覽器設定 SOCKS Host: ssh.client.ip:1080

SSH Tunnel

瀏覽遠端未開放網際網路連線的內部 web server

sudo ssh -L 8080:192.168.1.1:80 someone@remote.host #只允許本機連線

sudo ssh -L 0.0.0.0:8080:192.168.1.1:80 someone@remote.host #允許其他人連線

於本機打開瀏覽器, 輸入網址: http://localhost:8080/ 瀏覽遠端內部主機 192.168.1.1:80
在允許其他人連線的情況下, 別台電腦只要於瀏覽器輸入 http://ssh.client.ip:8080/ 就能透過這台 linux 主機連入遠端 192.168.1.1:80

SSH 與 Pipeline 應用

免密碼登入

ssh-keygen
cat ~/.ssh/id_rsa.pub | ssh someone@remote.host 'cat >> ~/.ssh/authorized_keys'
ssh someone@remote.host

替代方案: ssh-copy-id someone@remote.host

壓縮傳遞

tar -cz fileORfolder | ssh someone@remote.host 'tar -xz -C /to/path'

替代方案:
rsync -az fileORfolder someone@remote.host:/to/path
scp -C file someone@remote.host:/to/path
scp -r -C folder someone@remote.host:/to/path

備份遠端 mysql 資料庫

ssh someone@remote.host 'mysqldump -uroot -psecret --all-databases' | \
dd of=~/mysqldump.sql

備份到遠端主機

dd if=/dev/sdc | ssh -c blowfish someone@remote.host 'dd of=/path/to/backup.img'

tar -cvj *.jpg | ssh someone@remote.host 'cat > /path/to/backup.tar.bz2'

在本地還原備份資料

ssh someone@remote.host 'dd if=/path/to/backup.img' | dd if=/dev/sdc

ssh someone@remote.host 'cat /path/to/backup.tar.bz2' | tar -xvjf -

傳送麥克風聲音到遠端主機喇叭

dd if=/dev/dsp | ssh someone@remote.host 'dd of=/dev/dsp'

-
參考資料:

SSH 小技巧

沒有留言:

發佈留言