enable chrome remote desktop from ssh

you may encounter below problem when you ssh -XC to a remote PC and want to enable chrome remote desktop

org.freedesktop.PolicyKit1.Error.Failed: No session for cookie

I fix by sudo vim /etc/group and append my id to group “chrome-remote-desktop:x:1007:owen"

echo "chrome-remote-desktop:x:1007:owen" >> /etc/group

google-chrome-remote using pkexec to run as root and try to modify /etc/group, but pkexec cannot grant permission via ssh

so just add the group and add your account

ssh 遠端執行程式

X server + X client 的概念有個好處是可以讓視窗程式運算在 X server 那端,然後把結果呈現在另一端的 X client 上面,X server 與 X client 可以在同一台電腦上,也可以在不同一台電腦上。

例如預設安裝好桌面版本的 Ubuntu 都會有安裝 X server (和 X client ),那麼遠端(例如你有一台電腦在實驗室或者任何地方) Ubuntu 開機之後就可以在家裡,或者其他任何有網路的地方利用 ssh 來執行遠端的 console mode 程式甚至 Xwindow 程式。

ssh -X -C -pport -luser ip
  • -X:傳送Xwindow訊號到本地端
  • -C:壓縮傳送訊號。建議開啟,我測過未開/開啟的佔用頻寬約為140KB/17KB。(開 deluge 測試)
  • -p:遠端機器 ssh 監聽的 port
  • -l:要登入遠端的帳號
  • ip:遠端機器IP

-p,-l這類參數和後面的參數值中間可以不用空格

登入成功之後,輸入任何 Xwindow 的程式名稱就可以執行了,例如 Nautilus Ubuntu 預設的檔案管理員,而且是一個可以透過 ssh 直接視窗化管理遠端檔案,即使遠端系統沒有裝視窗系統也可以!

  • magicallove@Ubuntu9.04~11:~ >nautilus &

這樣就會看到遠端執行的樣子跑到本地端來囉,字型和設定以及該程式存取的檔案都是遠端機器的!

SSH怎麼裝?sudo apt-get install openssh-server 就可以了。
預設監聽 port 22,也可以去 /etc/ssh/sshd_config 檔案更改
改完之後 sudo /etc/init.d/ssh restart 重新執行 ssh 就可以套用新的設定值了!

tar + ssh 遠端異地備份

想要把主機 A 的檔案壓縮起來放到主機 B 怎麼辦?

你可以直接在主機 A 上面用 tar -zcvf file.tgz file 來壓縮你要的檔案(file),然後再用 ftp 等網路程式將檔案送過去主機 B ,不過這樣太慢了,不但要壓縮、傳送的時間,還要確保主機 A 有空間可以放下壓縮後的 file.tgz 資料!

如果檔案不必壓縮的話,那就可以用 scp 直接傳送檔案,也很快很安全,不過非常不適合大量的文字資料,例如大型的 BBS 站台可能有會數十 G 的文字資料,即使是區域網路也要耗上數小時。

這邊提供一個不錯的方法提供大家參考:

tar -zcpf - xxx | ssh remote-user@server-ip dd of=/home/remote-user/xxx.tgz

把本地端的 tar 檔案直接在遠端某個指定的資料夾解開

cat ubuntu.tar | ssh id@server-ip tar xf - -C /var/www/mainserver

-C 後面接遠端主機的路徑

如果兩端其中一台主機 CPU 效能很低的話,可以加上 -c blowfish 參數指定加密方法

tar -zcpf - xxx | ssh -c blowfish remote-user@server-ip dd of=/home/remote-user/xxx.tgz

blowfish 比較不耗運算資源。這個指定適用在傳輸瓶頸卡在 CPU 運算上的情形,像我自己有一台 CPU 800MHz 的機器,scp 預設的加密方式只能跑到 4M 就上不去了(乙太100M區網) :p

而如果想要直接複製檔案到遠端,可以去看看下面第一個參考資料連結,或者用這個方法:

tar -zcpf - xxx | ssh -c blowfish remote-user@server-ip tar -zxf -

直接在遠端就解壓縮出來即可。(其實我覺得 scp 這時候更方便!)

參考資料:
http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/backup.html
http://people.chu.edu.tw/~chunpo/solaris/sysadm/docs/backup.html

ssh tunnel

成大記中好像沒有提供 VPN 服務,一般人也不會用到= =a

如果要從校外下載計中提供的授權軟體的話,可以利用計中的 tcf 主機建立 ssh tunnel

讓在外面的機器先連到 tcf 再連到計中網頁下載(tcf主機空間每個人只有30M)

這個方法可以讓成大學生在校外網路下載校園授權軟體,非成大學生無法依此教學步驟,因為需要學校信箱帳密

另外補充說明,如果不想建立 ssh tunnel 這麼複雜的東西的話,直接掛上圖書館的proxy也可以進行校外下載(不過我想這樣做算鑽漏洞…)

ncku lib proxy


首先在 tcf 主機上面開啟一個 sshd 做 listen
先連上 tcf 主機再進行其他動作
telnet tcf.ncku.edu.tw
Trying 140.116.165.150…
Connected to tcf.ncku.edu.tw.
Escape character is ‘^]’.

SunOS 5.8

login: f7495223
Password: passwd
Sun Microsystems Inc. SunOS 5.8 Generic Patch October 2001
Dear User:
1. In order to keep our computer system operating normally and
evenly, every user only allows to submit five jobs at a time.
Please don’t submit many jobs to our system, otherwise the
system administrator has right to cancel your exceeded jobs.
2. Every user only allows to submit five jobs at a time. Don’t use
other user’s account to increase your jobs, otherwise the
system administrator will cancel your account.
tcf% bash [輸入bash 進入bash 這樣才有方便的tab鍵可以用]
bash-2.03$ mkdir ssh
bash-2.03$ cp /usr/local/etc/sshd_config ssh/ [複製 sshd 的設定檔給自己用]
bash-2.03$ cd ssh;vi sshd_config

將 sshd_config 裡面的port、HostKey*3、AuthorizedKeysFile改成下面的樣子

port 60000
這是要作 listen 的 port ,要高於1024 & 不能跟已經使用的 port 重複

HostKey /home/users1/f7495xxx/ssh/ssh_host_key
HostKey /home/users1/f7495xxx/ssh/ssh_host_rsa_key
HostKey /home/users1/f7495xxx/ssh/ssh_host_dsa_key
這三個東西要設定為金鑰路徑,下面會提到金鑰如何製作

bash-2.03$ ssh-keygen -t rsa1 -f ~/ssh/ssh_host_key
bash-2.03$ ssh-keygen -t rsa -f ~/ssh/ssh_host_rsa_key
bash-2.03$ ssh-keygen -t dsa -f ~/ssh/ssh_host_rsa_key
上面的動作會詢問幾個問題,直接Enter就可以了
必須要有這些 key 才能正確執行 sshd
目前為止應該可以用下面的命令正確執行 sshd 服務了
/usr/local/bin/sshd -f ~/ssh/sshd_config
不過…別急著執行…

我使用的經驗是 ssh 沒有辦法像一般使用那樣登入 tcf 主機
ssh 總是會在輸入密碼之後出現錯誤 Permission denied, please try again.

所以還要把 ssh 連線改成免密碼的連線!

先在你自己的機器上面製作你的機器的 rsa key

( 這個製作方法只適用 Un*x 機器,windows 的怎麼做我也沒研究過 :p )

your-PC$ ssh-keygen -t rsa [會產生id_rsa, id_rsa.pub]
然後必須把 id_rsa.pub 想辦法送到 tcf 主機上面,先假設 your-PC 有 ftp 服務

回到 tcf 主機上面, 使用 ftp 連到 your-PC ,下載 id_rsa.pub

bash-2.03$ ftp your-PC
Name 你的機器使用者名稱
Password 使用者密碼
ftp> get id_rsa.pub [依 id_rsa.pub 放的位置,然後輸入正確下載路徑]
ftp> bye [離開 ftp ]
bash-2.03$ cat id_rsa.pub >> authorized_keys

進行到這個階段之後,就可以在 your-PC 使用 ssh 免密碼連線到 tcf 主機了!

可以免密碼連線之後也就完成了所有動作,最後只需要下面這個指令來完成 ssh tunnel

ssh -p60000 -f -N -L 9000:ftp.ncku.edu.tw:80 f7495xxx@tcf.ncku.edu.tw

-p tcf.ncku.edu.tw listen 的 port
-f 是背景執行
-N 是不要建立terminal interface
-L 送到 localhost:9000 的連線會透過 tcf.ncku.edu.tw 轉送到 ftp.ncku.edu.tw:80

your-PC$ wget http://127.0.0.1:9000/~msvl/2002/winxp_sp3.iso

這樣就可以下載了!

上面方法已經有測試過從國X中心的機器下載成大的授權軟體

PS : tcf主機的密碼好像就跟成功入口的一樣吧

登出 tcf 主機之後, sshd 並不會關閉,可以用 ps -A 找出執行中的 sshd

然後 kill 掉他的 pid,不 kill 掉的話太容易被管理員看到怪怪的 listen …


如果你已經有其他可以 ssh 登入的機器的話,就直接用下面這個命令格式進行 ssh tunnel 就可以了

ssh tunnel的使用方法非常簡單,而且蠻好用的,通常用在你的機器所在的網路環境有很多限制,例如不能連上 port 23 (無法連上BBS)

ssh -p60000 -f -N -L 9000:bbs.ccns.ncku.edu.tw:23 ID@somePC

-p somePC 的 sshd listen 的 port
-f 是背景執行
-N 是不要建立terminal interface
-L 送到 localhost:9000 的連線會透過 somePC 轉送到 bbs.ccns.ncku.edu.tw:23