在日常生產中,我們一般情況下都是在遠程端去控制服務器,很少直接接觸服務器,這就使得我們掌握如何使用ssh服務等遠程服務很重要了。SSH可以實現遠端掌控服務器,查看服務器的狀態、信息等一些情況。掌握其原理,對於我們去理解別的遠程工具有一定的作用;容易掌握。
一、SSH基本介紹
1、含義:
SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲建立在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可運行SSH<摘自:百度>。
2、實現SSH的方法
(1)OpenSSH 工具
(2)dropbear 工具
3、SSH協議版本
SSHv1:基於CRC-32做MAC(Massage Autherization Code);不安全。
SSHv2:雙方主機協議選擇安全的MAC方式,基於DH算法做祕鑰交換,基於RSA或DSA實現身份認證。
4、SSH認證方式
- 基於passwd認證方式
- 基於祕鑰認證
二、實現SSH的管理方法
1、基於OpenSSH
(1)概念
OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現。SSH協議族可以用來進行遠程控制, 或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)、 rcp ftp、 rlogin、rsh都是極爲不安全的,並且會使用明文傳送密碼。OpenSSH提供了服務端後臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程中的數據,並由此來代替原來的類似服務。
(2)openssh工具
(a)ssh工具相關的安裝包
openssh-VERSION.rpm 通用包
openssh-server-VERSION.rpm 服務端安裝包
openssh-client-VERSION.rpm 客戶端安裝包
(b)配置文件
/etc/sshd/ssh_config客戶端配置文件
選項
Host * 表示所有主機
StrictHostKeyChecking ask 首次登陸是否檢查提示
ForwardX11Trusted yes 是否開啓信任x11轉發
/etc/sshd/sshd_config 服務器端配置文件
選項
Port 22 默認端口號爲22
AddressFamily any 地址家族
ListenAddress :: 監聽的地址
HostKey 密鑰存放的位置
AuthorizedKeysFile 認證文件存放位置
PermitRootLogin 是否允許管理員登錄,建議改爲no
UseDNS 是否支持dns反向解析 此選項和GSSAPIAuthentication 同時使用;
ClientAliveInterval和ClientAliveCountMax 同時使用,兩者相乘,就是連接的存活時間。
MaxAuthTries 最多認證次數
Banner /path/file 登錄的提示信息
MaxSessions 最多會話
AllowUsers 允許用戶
AllowGroups 允許組\>
DenyUsers 禁止用戶
DenyGroups 禁止組
(3)ssh工具使用格式
ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]
選項:
-c 壓縮方式
-b 綁定IP連接
-p PORT 指定對方的端口號
-X 支持x11轉發
-y 支持信任x11轉發,與配置文件ForwardX11Trusted有關
-t 強制僞tty分配
ssh -t remoteserver1 ssh remoteserver2 :當遠程主機remoteserver2無法直接到達時,可以使用-t參數,然後由remoteserver1跳轉到remoteserver2。在此過程中要先輸入remoteserver1的密碼,然後再輸入remoteserver2的密碼,然後就可以操作remoteserver2了。
**示例:**
假設這裏有三臺機器,CnetOS6.9-1 IP爲192.168.159.138;CnetOS6.7-1 IP爲192.168.159.139;CnetOS7.3-2 IP爲192.168.159.161。CentOS6.9-1 可以與CentOS7.3-1通信,不能與CentOS7.3-2通信;而CentOS7.3-1可以與CentOS7.3-2通信。如何實現CentOS6.9-1與CentOS7.3-2通信呢?
(1)在CentOS7.3-2禁止CentOS6.9-1的IP 連接
[root@localhost~]#iptables -A INPUT -s 192.168.159.138 -j REJECT
(2)在CentOS6.9-1測試是否能ping通
[root@centos6~]#ping 192.168.159.161 PING 192.168.159.161 (192.168.159.161) 56(84) bytes of data. From 192.168.159.161 icmp_seq=1 Destination Port Unreachable
(3)然後通過CentOS7-1爲跳板機連接到CentOS7.3-2主機上
(a)先測試CentOS6.9-1是否能連接到主機CentOS7.3-2
[root@centos6~]#ssh 192.168.159.161 ssh: connect to host 192.168.159.161 port 22: Connection refuse
(b)利用CentOS7.3-1作爲跳板機連接到CentOS7.3-2主機上
[root@centos6~]#ssh -t 192.168.159.139 ssh 192.168.159.161 [email protected]'s password: [email protected]'s password: Last login: Tue Sep 12 19:21:37 2017 from 192.168.159.161
順利的解決了我們遇到的問題。
(4)工作機制
當客戶端連接SSH服務器時,會複製ssh服務器 `/etc/ssh/ssh_host*.key.pub ` (CentOS7是/etc/ssh/ssh_host_ecdsa_key.pub)文件中的公鑰到客戶機的` ~./ssh/know_hosts`中。下次連接時,會自動匹配響應的私鑰,如果匹配成功,則連接,反之亦然。
(a)客戶端向服務器端發出請求
(b)服務器端接受到請求,發送公鑰給客戶端
(c)客戶端輸入賬戶和密碼通過服務器端的公鑰加密回傳給服務端
(d)服務端通過自己的私鑰解密,得到用戶名和密碼與本地作對比驗證,驗證成功則允許登錄,反之亦然。
__示例:__
前提:CentOS 6 IP 爲192.168.10.100
;CentOS 7 IP 爲192.168.10.101
(1)使用ssh命令使兩臺主機通信
[
root@centos6~]#ssh [email protected] The authenticity of host '192.168.10.100(192.168.10.100)' can't be established. RSA key fingerprint is a1:18:36:cc:e4:a1:de:c5:ad:6f:e4:ec:91:1d:d7:c4. Are you sure you want to continue connecting (yes/no)? yes #第一次連接會詢問是否信任此臺主機 Warning: Permanently added '192.168.10.100' (RSA) to the list of known hosts. [email protected]'s password: #輸入密碼 Last login: Sat Sep 9 23:30:57 2017 from 192.168.159.1# #登錄成功
上面詢問/etc/ssh/ssh_con1fig文件下的選項StrictHostKeyChecking 有關,如果該爲no,則不會顯示檢查
`[root@localhost~]#l. #查看是否生成.ssh目錄
上述過程中CentOS 6系統會自動創建`~/.ssh/known_hosts`且會複製CentOS 7中的公鑰到自己主機上。
(2)上述的驗證機制與公鑰有關還是私鑰有關呢?
下面我們再啓動 一臺虛擬主機 CentOS 7.2 IP 爲 192.168.10.102
現在我們讓CentOS 7.2 冒充CnetOS 6
情況一:修改CentOS 7.2的IP地址爲192.168.10.100,嘗試連接CentOS 7
(a)修改IP地址爲192.168.10.100
(b)把CentOS6服務端IP禁用
[root@localhost~]#ifconfig eth0 down
(c)使用客戶機CentOS 7 連接
[root@localhost~]#ssh 192.168.10.100
會發出WARNING警告遠程主機認證已經改變。
情況二:如果我們把公鑰複製到CentOS 7.2中連接呢?
(a)將`/etc/ssh/ssh_host_rsa_key.pub`拷貝到冒充主機上
[root@localhost~]#scp /etc/ssh/ssh_host_rsa_key.pub 192.168.10.102:/etc/ssh
(b)連接CentOS 7.2
[root@localhost~]#ssh 192.168.10.100
會發出警告。
情況三:如果我們發私鑰複製到CentOS7.2中,連接會發生什麼情況?
[root@localhost~]#ssh 192.168.10.100
認證成功,所以我們在日常生產中保管好自己的私鑰文件。
(5)ssh服務的最佳實踐
建議
不要使用默認端口 Port
禁止使用version 1 protocol Protocol
限制可登錄用戶 MaxAuthTries
設定空閒會話時長 ClientAliveInterval和ClientAliveCountMax
利用防火牆設置ssh訪問策略
僅監聽特定的IP地址 ListenAddress
基於口令認證時,使用強密碼策略
基於密鑰的認證 PubkeyAuthentication
禁止使用空密碼 PasswordAuthentication
禁止root用戶直接登錄 PermitRootLogin
限制ssh的訪問頻度和併發在線數 MaxAuthTries和MaxSessions
做好日誌分析 SyslogFacility
三、基於密鑰認證
1、工作機制
(a)客戶端在本機生成一對密鑰
(b)客戶端通過密令將本機的公鑰拷貝到服務器端,服務端會將客戶端的公鑰存在至`~/.ssh/authorized.keys`目錄下
(c)客戶端再次發送請求時,包括IP、用戶名;
(d)服務端在通過上述目錄查找是否有與之對應的公鑰,如果查找成功響應IP和用戶名,會隨機生成一個字符串
(e)服務端將使用客戶端的公鑰進行加密,然後發送給客戶端
(f)客戶端得到服務端發來的消息後,客戶端使用私鑰進行解密,將解密的字符串發送給服務端
(g)服務端接受客戶端發來的字符串後,跟之前對比,如果一致,允許登錄,反之亦然。
###2、生成密鑰對命令的介紹
ssh-keygen:authentication key generation, management and conversion
格式:
ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile]
選項:
-t 加密的類型
-P 是否對生成的私鑰加密
-f 指定的文件名
ssh-copy-id :install your public key in a remote machine’s authorized_keys
格式:
ssh-copy-id [-i [identity_file]] [user@]machine
選項:
-i 指定公鑰存放的位置
###3、基於key的過程
(a)在客戶端生CentOS 7在一對密鑰
[root@localhost~]#ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #密鑰存放的位置
Enter passphrase (empty for no passphrase): #是否對密鑰加密,建議加密,這裏相當於選項-P
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f5:f9:21:08:dd:2a:8d:f7:9f:88:4e:88:53:3e:45:a3 [email protected]
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
| |
| . . |
| . = . |
| B = . |
| E * + . |
| + = . o . |
| o + . . . |
| . o . o . |
| .o . o |
+-----------------+
(b)使用命令將公鑰拷貝到服務端CentOS 6主機上
[root@localhost~]#ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[root@centos6~]#ls .ssh/authorized_keys 查看是否在服務端生成目錄`authorized.keys`
.ssh/authorized_keys
(c)測試
[root@localhost~]#ssh 192.168.10.100
Last login: Thu Sep 7 18:39:01 2017 from 192.168.159.1 #登錄成功
**如果我們私鑰加密需要驗證多臺,如果我們一臺一臺的驗證,這樣顯然不是我們想要的方法,下面就很好的解決了我們這個問題**
####ssh-agent命令介紹
ssh-agent是個長時間持續運行的守護進程(daemon),設計它的唯一目的就是對解密的專用密鑰進行高速緩存,這是一個一次性的過程,如果終端退出即消失。
####工作機制
如果執行這條命令,會啓動後臺一個子進程。代理一開始並沒有私鑰文件,私鑰文件是通過命令`ssh-add`添加。並且把文件~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and
~/.ssh/identity添加到代理中。通過使用環境變量能定位和驗證。SSH_AUTH_SOCK和SSH_AGENT_PID環境變量。
####實現代理的方法
(a)ssh-agent xterm & 利用內含的export命令執行環境使環境變量可用
(b)eval `ssh-agent -s`
-s sh ksh
-c csh
####步驟
(a)對上述生成的密鑰加密
[root@localhost~]#ssh-keygen -p #-p 修改密碼 Enter file in which the key is (/root/.ssh/id_rsa): Key has comment '/root/.ssh/id_rsa' Enter new passphrase (empty for no passphrase): Enter same passphrase again: Pass phrases do not match. Try again.
(b)啓動代理
[root@localhost~]#ssh-agent bash
#啓動一個bash子進程
(c)將私鑰文件添加至代理中
[root@localhost~]#ssh-add Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
(d)測試
[root@localhost~]#ssh 192.168.10.102 Last login: Sun Sep 10 17:46:13 2017 from 192.168.10.101
登錄成功,這樣提高了我們的工作效率。
###4、利用xshell基於key連接
在xshell中工具-->新建用戶密鑰生成嚮導-->選擇密鑰類型和密鑰長度-->給密鑰名稱命名並給密鑰加密-->選擇公鑰格式-->保存公鑰文件至指定目錄下-->將公鑰複製到需要遠程連接的主機上~/.ssh/authorized.keys目錄下,如果沒有文件需要創建此目錄,並修改權限。
在生成密鑰是選擇不合適的公鑰格式,可以使用密令修改:
[root@centos6~]#ssh-keygen -i -f PUBLIK.key >>~/.ssh/authorized.keys
-i 讀取不加密的私鑰和公鑰非OpenSSH兼容輸出
##四、端口轉發
在日常生產中,我們常常會遇到這樣的問題,在公司運行一個服務或者一些程序,想要查看其運行狀態及其結果等;公司的機器只能從內部訪問外網,而內部外的並不能訪問內部的機器;或者公司有一臺ssh服務器,不能使用telnet服務去訪問內部的主機,這樣我們如何解決呢?由於ssh服務加密傳輸數據,我們可通過ssh服務解決上述問題。通過ssh連接首先構建一個”隧道“,然後可以通過這個隧道,遠程連接到主機。
###1、ssh本地端口轉發
格式:ssh -L localPort:remateIp1(需要遠程連接的IP):rematePort IP2(跳板機的IP)
選項
-f 後臺啓用
-N 不打開遠程shell,處於等待狀態
-g 啓用網關功能
示例
假設這裏有三臺機器,CnetOS6.9-1 IP爲192.168.159.138;CnetOS6.7-1 IP爲192.168.159.139;CnetOS7.3-2 IP爲192.168.159.161。CentOS7.3-2和CentOS7.3-1在公司的局域網中,CentOS6.9-1想連接CentOS7.3-2與之通信,該如何實現?
(1)模擬一個環境,先禁止CentOS6.9-1遠程連接CentOS7.3-2
[root@localhost~]#iptables -A INPUT -s 192.168.159.138 -j REJECT
(2)首先確認要使用本地端口是否被別的服務佔用
[root@centos7~]#ss -tn
(3)CentOS6.9-1利用ssh本地端口轉發連接
[root@centos6~]#ssh -L 10001:192.168.159.161:23 -fN 192.168.159.139 [email protected]'s password: Last failed login: Tue Sep 12 05:04:50 CST 2017 from ``192.168.159.138 on ssh:notty There were 4 failed login attempts since the last successful login. Last login: Tue Sep 12 04:58:25 2017 from 192.168.159.1
(4)查看隧道是否建立成功
[root@centos6~]#ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.159.138:22 192.168.159.1:4708` ESTAB 0 0 192.168.159.138:35506 192.168.159.139:22` #已經建立連接 [root@localhost~]#ss -tn #在CetnOS 7.3-2無連接 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.159.161:22 192.168.159.1:474
(5)在CentOS6.9-1ftp服務連接操作了
[root@centos7~]#ssh -p 10000 127.0.0.1
(6)如果我們連接完成想刪除“隧道”該怎麼解決呢?此時只能同過kill命令刪除
[root@centos7~]#kill -9 `pidof ssh`
2、ssh遠程端口轉發
與上述示例相反,內網中只有一臺主機可以訪問外網,而另外一臺主機不能訪問外網,但是另外一臺主機要想與外部的主機連接時,只能讓一臺主機作爲跳板機,連接至外部機器,下面是實現方法:
(1)先模擬出來一個環境,同上述環境一樣
(2)在CentOS7.3-2主機上創建隧道
[root@centos7~]#ssh -R 9999:192.168.159.138:22 -fN 192.168.159.164
(3)查看端口是否創建成功
[root@centos7~]#ss -tn State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.159.139:51608 192.168.159.164:22
(4)在CentOS7.3-2連接CentOS6.9-1
[root@localhost~]#telnet 127.0.0.1 9999
(5)此處刪除的方法更ssh本地端口轉發一樣。
3、ssh動態端口轉發
上述的兩種,只是點對點的轉發,如果我們有許多的端口,顯然這樣操作是不理想的,所有ssh支持ssh動態端口轉發功能。如果某一臺機器不能受限制不能訪問某些網站,而另一臺主機可以訪問,ssh動態轉發就解決了這個問題。工作原理是本地機器上分配一個socket偵聽port端口,一旦這個端口上有了連接,該連接就經過安全通道轉發出去,根據應用程序的協議可以判斷遠程主機和哪裏連接。
注意:只有root才能轉發特權端口。
格式:ssh -D <local port> <SSH Server>
(1)建立通道
[root@centos7~]#ssh -D 1080 -fN 192.168.159.165
(2)測試是否成功
[root@centos7~]#curl --socks5 127.0.0.1 http://192.168.159.166 test
上述過程中與sshd_config中的幾個選項有關,AllowTcpForwarding、
GatewayPorts
4、X協議轉發
格式:ssh -X user@remotehost gedit
X協議轉發與sshd_config配置文件中的選項`X11Forwarding`有關。
五、複製文件命令介紹
1、scp命令
scp:secure copy (remote file copy program)
格式:
scp [options] [user@]host:/sourcefile /destpath
scp [options] /sourcefile [user@]host:/destpath
選項
-c 壓縮數據流
-r 遞歸複製
-p 保持原文件屬性
-q 靜默模式
-P PORT 指明遠程主機的端口
2、rsync
rsync: rsync - a fast, versatile, remote (and local) file-copying tool
格式:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
選項
-n 模擬複製過程
-v 顯示詳細過程
-r 遞歸複製
-p 保留權限
-t 保留時間戳
-g 保留組信息
-o 保留所有者信息
-l 將軟連接文件本身複製
-L 將軟連接文件指向的文件複製
-X 保留SElinux屬性
-a 存檔,但不保留ACL和SElinux屬性
**注意:rsync命令只複製原有文件修改的文件或目錄。而scp不管是否修改文件屬性都複製。**
3、sftp命令
scp:secure file transfer program,交換式傳輸工具
格式:
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
如果我們管理幾十臺或者更多機器,使用起來並不是特別方便,而且還耗時耗力。下面介紹介個輕量級的工具。
4、pssh
pssh包是來自於epel源。
/usr/bin/pnuke
/usr/bin/prsync
/usr/bin/pscp.pssh
/usr/bin/pslurp
/usr/bin/pssh
以上執行的命令。
pssh命令: parallel ssh program
格式:
pssh [-vAiIP] [-h hosts_file] [-H [user@]host[:port]] [-l user]
[-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x
args] [-X arg] command ...
選項
-h HOST_FILE 包含IP的文件
-H [user@]IP[:port] 連接的主機,如果要接連多個主機用“”引起來,主機之間空格分開
-l USER|用戶名
-p 併發數
-t 超時秒數
-o OUTDIR 輸出目錄,在該目錄下創建
-e ERRDIR 錯誤輸出目錄
-x ARGS|傳遞過個命令,多個命令用“”引起來,使用空格分隔
-X 同-x意義一樣,但每次只傳遞一個命令
-i 將輸出結果輸出當前終端
-I 讀取每個輸出命令,並傳遞ssh進程,允許腳本傳送到標準輸入
-v 顯示ssh連接時的錯誤信息
-P 打印輸出
-A 提示輸入密碼,並把密碼傳遞給ssh服務
示例
pslurp:parallel process kill program
格式:
pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user]
[-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x
args] [-X arg] [-L localdir] remote local
選項
-L localdir 複製遠程主機文件或目錄到本機指定的目錄下
-r 遞歸複製
其他選項請參考pssh
prsync 將文件或文件夾從本地同步到遠程主機上
格式:
prsync [-vAraz] [-h hosts_file] [-H [user@]host[:port]] [-l user]
[-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x
args] [-X arg] [-S args] local remote
選項
-a 可以維持文件的屬性
-z 壓縮傳輸
pnuke:殺死遠程主機上的進程,相當於killall
六、dropbear
Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基於POSIX的各種平臺。 Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統,如無線路由器。 <摘自:百度>
1、安裝dropbear工具包
(a)從官網上下載dropbear源碼包並安裝有關編譯的環境包組
(b)編譯安裝源碼包
[root@centos7/usr/src]#tar xvf dropbear-2017.75.tar.bz2 [root@centos7/usr/src/dropbear-2017.75]#./configure [root@centos7/usr/src/dropbear-2017.75]#make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" [root@centos7/usr/src/dropbear-2017.75]#make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
(c)有關命令的存放位置
/usr/local/sbin和/usr/local/bin
(d)生成key存放的位置
dss /etc/dropbear/dropbear_dss_host_key
rsa /etc/dropbear/dropbear_rsa_host_key
ecdsa /etc/dropbear/dropbear_ecdsa_host_key
(e)創建目錄並生成密鑰
[root@centos7/usr/local/sbin]#mkdir /etc/dropbear [root@centos7/usr/local/bin]#dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048 Generating key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCfn+syhEMRgkxQ1Y/8Hzu54aTv23hLKyiDOTNVAqpZD+kS63TOcD4r5wCQsARNhl4e0kKWz9CLl6y3cWPxO+BbxCcZ+Ue2HqGQO2vhltzD2voL5xuOOg50nv1nrMrudS3kIYkg3gmVhn0Z0nKntJFdbzihzbLU0c1MgstTscu0PpX7q9j2c0mUHuYFqTmj2X4AJB0qjj8VZs93KTn3YyzVBph7mub8FQkS+fLjMvzan66+GjAtafeR+ezoFP6NAC7BuVaHaKoUNyP/myZgA3wkM4LL8OuoSk3uJia5ZDzDEsUNcHsmwaDVlJDGbjMRx+Djoafj9JNE7su+TmLMl2z root@centos7 Fingerprint: md5 bf:3b:0a:85:94:85:e1:af:91:74:14:d3:e2:0c:6e:d0
(f)啓動dropbear
dropbear選項
-F Don't fork into background前臺執行
-E Log to stderr rather than syslog輸出信息在屏幕上
-p [address:]port Listen on specified tcp port (and optionally address),up to 10 can be specified(default port is 22 if none specified)
[root@centos7/usr/local/bin]#dropbear -p 2222 -F -E
(g)使用dbclinet遠程連接
[root@centos6/usr/local/bin]#dbclient 192.168.159.139
(h)拷貝文件
[root@centos6/usr/local/bin]#scp /etc/fstab 192.168.159.139:/ /usr/bin/dbclient: No such file or directory lost connection
此時連接會報錯,說我們沒有/usr/bin/dbclient
[root@centos6/usr/local/bin]#hash
通過hash命令查看確實是使用我們剛剛創建的路徑程序,所有解決此問題創建一個軟連接即可。
[root@centos6/usr/local/bin]#ln -sv /usr/local/bin/dbclient /usr/bin/dbclient
/usr/bin/dbclient' -> `/usr/local/bin/dbclient [root@centos6/usr/local/bin]#scp /etc/fstab 192.168.159.139: