0. 時間同步
sudo apt-get install chrony
1. ubuntu自帶的有openssh-client
可以通過如下指令
ssh username@host
來連接同一局域網內的計算機
可是要想通過ssh被連接,ubuntu系統需要有openssh-server,可以通過
ps -e | grep ssh
來查看,如果沒有顯示sshd,說明openssh-server還沒有安裝。
2. 安裝openssh-server
sudo apt-get install openssh-server
來安裝openssh-server,如果順利的話會安裝成功,如果遇到
sudo apt-get install openssh-server 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關系樹 正在讀取狀態信息... 完成 有一些軟件包無法被安裝。如果您用的是 unstable 發行版,這也許是 因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟件 包尚未被創建或是它們已被從新到(Incoming)目錄移出。 下列信息可能會對解決問題有所幫助: 下列軟件包有未滿足的依賴關系: openssh-server : 依賴: openssh-client (= 1:6.6p1-2ubuntu1) E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。
這是因為,openssh-server是依賴於openssh-client的,那ubuntu不是自帶了openssh-client嗎?原因是自帶的openssh-clien與所要安裝的openssh-server所依賴的版本不同,這里所依賴的版本是
1:6.6p1-2ubuntu1
所以要安裝對應版本的openssh-clien,來覆蓋掉ubuntu自帶的
sudo apt-get install openssh-client=1:6.6p1-2ubuntu1 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關系樹 正在讀取狀態信息... 完成 建議安裝的軟件包: libpam-ssh keychain monkeysphere 下列軟件包將被【降級】: openssh-client 升級了 0 個軟件包,新安裝了 0 個軟件包,降級了 1 個軟件包,要卸載 0 個軟件包,有 0 個軟件包未被升級。 需要下載 566 kB 的軟件包。 解壓縮后會消耗掉 0 B 的額外空間。 您希望繼續執行嗎? [Y/n] y 獲取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main openssh-client amd64 1:6.6p1-2ubuntu1 [566 kB] 下載 566 kB,耗時 2秒 (212 kB/s) dpkg:警告:downgrading openssh-client from 1:6.6p1-2ubuntu2 to 1:6.6p1-2ubuntu1 (正在讀取數據庫 ... 系統當前共安裝有 200015 個文件和目錄。) Preparing to unpack .../openssh-client_1%3a6.6p1-2ubuntu1_amd64.deb ... Unpacking openssh-client (1:6.6p1-2ubuntu1) over (1:6.6p1-2ubuntu2) ... Processing triggers for man-db (2.6.7.1-1) ... 正在設置 openssh-client (1:6.6p1-2ubuntu1) ...
可以看到,提示了系統中openssh-client被降級,這樣再安裝openssh-server就可以成功了!
3. 配置
可以通過
hostname
命令來查看主機名
如果你想將機器人上的電腦作為主機(運行roscore),假設器主機名為hostname_robot,台式機主機名為hostname_desktop
則在機器人電腦上修改bashrc文件:
sudo gedit .bashrc
在文件最后添加
export ROS_HOSTNAME=hostname_robot.local
然后在台式機電腦上修改bashrc文件,添加如下代碼:
export ROS_HOSTNAME=hostname_desktop.local export ROS_MASTER_URI=http://hostname_robot.local:11311
PS: 上述代碼不能有空格
4. 登錄
在台式機上登錄到機器人電腦上:
ssh username@hostname.local
OK!
5. 客戶端顯示圖形界面
ssh連接成功后,如果想要顯示圖形界面,需要做一些配置。步驟如下:
5.1 服務器端的ssh必須運行轉發X界面,在ssh服務器中:
sudo gedit /etc/ssh/sshd_config
其中有一行X11Forwarding yes,確保這個是yes(注意這個配置文件中的#是注釋,確保X11Forwarding前面沒有#注釋),
然后重啟ssh服務
cd /etc/init.d ./ssh restart
5.2 客戶端配置,在/etc/ssh/ssh_config配置文件中,找到ForwardAgent yes,ForwardX11 yes,ForwardX11Trusted yes這3個確保是yes(注意這個配置文件中的#是注釋,確保你修改的行沒有被注釋掉)
5.3 配置完成后,進入終端,現在假設我們的ubuntu客戶端的ip是192.168.0.19,而ssh服務器的ip是192.168.0.222。下面是執行步驟,注意別弄錯了:
首先終端未連接ssh之前,執行xhost +192.168.0.222 這個步驟是允許ssh服務器的X界面連接過來然后執行ssh -X root@192.168.0.222 注意-X這個是大寫的X,這個步驟是連接到ssh服務器,接着會要輸入密碼
這個時候終端已經連接到ssh服務器了,然后執行export DISPLAY=192.168.0.19:0.0這個步驟是把ssh服務器的X顯示重新定位到192.168.0.19的0.0顯示器中,也就是我們的客戶端
然后做個測試,執行xclock,等待。。。如果這個時候在你的ubuntu界面中出現了一個時鍾界面,那么恭喜你成功了。