国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ssh詳解–讓你徹底學(xué)會(huì)ssh

這篇具有很好參考價(jià)值的文章主要介紹了ssh詳解–讓你徹底學(xué)會(huì)ssh。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

ssh詳解–讓你徹底學(xué)會(huì)ssh

概念

SSH全稱secure shell,安全外殼協(xié)議(安全的shell),是一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議(默認(rèn)端口號(hào)為22)。通過(guò)ssh協(xié)議可以在客戶端安全(提供身份認(rèn)證、信息加密)的遠(yuǎn)程連接LInux服務(wù)器或其他設(shè)備。

使用廣泛的Xshell軟件就是基于SSH協(xié)議遠(yuǎn)程連接。

SSH遠(yuǎn)程連接之后能干什么?

SSH遠(yuǎn)程連接之后,就可以像操作本地的機(jī)器一樣操作遠(yuǎn)程機(jī)器。當(dāng)需要操控的機(jī)器不在本地時(shí)就可以使用ssh協(xié)議遠(yuǎn)程連接操控。

實(shí)現(xiàn)

OpenSSH

SSH協(xié)議有諸多的實(shí)現(xiàn)軟件,廣泛使用的SSH實(shí)現(xiàn)軟件是OpenSSH。OpenSSH是SSH協(xié)議的一種開(kāi)源實(shí)現(xiàn),現(xiàn)在已經(jīng)成為L(zhǎng)inux、Unix等操作系統(tǒng)的SSH協(xié)議默認(rèn)實(shí)現(xiàn)。

OpenSSH官網(wǎng):點(diǎn)這里

官網(wǎng)的介紹:

OpenSSH is the premier connectivity tool for remote login with the SSH protocol. It encrypts all traffic to eliminate eavesdropping, connection hijacking, and other attacks. In addition, OpenSSH provides a large suite of secure tunneling capabilities, several authentication methods, and sophisticated configuration options.

OpenSSH軟件分為兩個(gè)部分:client端和server端

OpenSSH 服務(wù)端主要提供遠(yuǎn)程登錄和文件傳輸?shù)裙δ?,可以被其他用戶或系統(tǒng)通過(guò) SSH 協(xié)議連接并訪問(wèn)。通過(guò) SSH 連接到 OpenSSH 服務(wù)端后,用戶可以在服務(wù)器上執(zhí)行命令、上傳或下載文件等操作。

OpenSSH 客戶端則是用來(lái)連接遠(yuǎn)程服務(wù)端的工具。用戶可以使用命令行或圖形界面工具來(lái)連接到 OpenSSH 服務(wù)端,并通過(guò) SSH 協(xié)議進(jìn)行通信。OpenSSH 客戶端可以通過(guò)用戶名和密碼、公鑰驗(yàn)證等方式進(jìn)行身份驗(yàn)證,一旦連接成功,用戶就可以在遠(yuǎn)程服務(wù)器上執(zhí)行命令、上傳或下載文件等操作。

使用OpenSSH控制遠(yuǎn)程機(jī)器,需要對(duì)方安裝了OpenSSH服務(wù)端。

安裝

OpenSSH基本不需要大家自己安裝,大部分的Linux發(fā)行版,比如Debian、Ubuntu、CentOS等都默認(rèn)安裝好OpenSSH,相當(dāng)于系統(tǒng)軟件,當(dāng)然如果因?yàn)槟承┰驔](méi)有安裝OpenSSH,也可以使用下面的命令安裝。

在 CentOS 或 Red Hat Enterprise Linux 中可以使用以下命令安裝:

sudo yum install openssh-clients openssh-server

在 Ubuntu 或 Debian 中可以使用以下命令安裝:

sudo apt install openssh-client openssh-server

查看安裝版本(可以驗(yàn)證是否安裝)

ssh -V

確認(rèn)SSH服務(wù)正在運(yùn)行

systemctl status sshd

使用

確認(rèn)安裝好OpenSSH之后,就可以使用ssh遠(yuǎn)程控制其他機(jī)器了,當(dāng)然被控制的機(jī)器也需要安裝OpenSSH。在Linux中使用OpenSSH與其他軟件相同都是通過(guò)命令的形式使用,其中進(jìn)行連接的命令為ssh

OpenSSH客戶端連接服務(wù)端時(shí)需要進(jìn)行身份認(rèn)證,常用的認(rèn)證方式有兩種:密碼認(rèn)證和密鑰認(rèn)證。這里將用密碼認(rèn)證的方式進(jìn)行基本的使用。

ssh命令進(jìn)行遠(yuǎn)程連接有三種命令格式:

ssh 用戶名@hostname

ssh -l [用戶名] hostname

ssh hostname

加深對(duì)ssh的理解:使用Linux操作系統(tǒng)的時(shí)候,開(kāi)機(jī)完成之后的第一件事就是登錄用戶,輸入用戶名然后輸入密碼,這個(gè)用戶是Linux中已經(jīng)創(chuàng)建的,然后密碼存儲(chǔ)在/etc/shadow中,這是本地登錄的時(shí)候的過(guò)程。

SSH遠(yuǎn)程登錄也是差不多的,只是從本地?fù)Q成遠(yuǎn)程。在前兩個(gè)命令中,都可以傳入用戶名,這個(gè)用戶名要求遠(yuǎn)程機(jī)器中已經(jīng)創(chuàng)建,命令本質(zhì)就是使用這個(gè)用戶名去登錄遠(yuǎn)程機(jī)器,然后第三個(gè)命令形式?jīng)]有用戶名,它默認(rèn)使用的是你當(dāng)前本地機(jī)器登錄的用戶名去登錄遠(yuǎn)程機(jī)器(第二個(gè)命令不指定效果相同),比如你當(dāng)前本地機(jī)器是root用戶,使用第三個(gè)命令去遠(yuǎn)程連接,則會(huì)使用root用戶去登錄。hostname一般為遠(yuǎn)程機(jī)器的IP地址,也可使用主機(jī)域名。

連接完成之后就可以遠(yuǎn)程控制主機(jī)。

示例:使用ssh 用戶名@hostname的形式連接遠(yuǎn)程機(jī)器。

host1模擬本地機(jī)器,IP地址:192.168.94.142;host2模擬遠(yuǎn)程服務(wù)器,IP地址:192.168.94.143,連接成功之后會(huì)發(fā)現(xiàn)第一提示符已經(jīng)變?yōu)閔ost2,這時(shí)就可以遠(yuǎn)程操縱host2了。連接過(guò)程截圖如下所示:

ssh,ssh,運(yùn)維,linux,centos

  • ssh命令運(yùn)行過(guò)程:
    1. 當(dāng)?shù)谝淮芜B接時(shí)會(huì)提醒The autheticity of host '192.168.94.143' can't be establised,這是由于第一次連接,~/.ssh下的konwn_hosts文件無(wú)相關(guān)的主機(jī)信息(甚至這個(gè)文件都沒(méi)有),無(wú)法信任對(duì)方主機(jī),所以后續(xù)還會(huì)詢問(wèn)你是否進(jìn)行連接,需要輸入yes
    2. 當(dāng)輸入yes之后,就會(huì)將該主機(jī)的信息放入known_hosts文件中(沒(méi)有文件會(huì)自動(dòng)生成),然后提示輸入密碼。
~/.ssh文件路徑

~/.ssh是存放SSH客戶端相關(guān)配置和密鑰文件的目錄,但是第一次使用ssh的時(shí)候這個(gè)目錄一般是空的,上述的konwn_hosts只有使用了ssh之后才會(huì)自動(dòng)創(chuàng)建,然后其他主機(jī)發(fā)送公鑰至本機(jī)之后,本機(jī)會(huì)生成authorized_keys文件用于存放相關(guān)的主機(jī)和密鑰信息。如果想要對(duì)客戶端的配置進(jìn)行修改,也可以在該目錄下創(chuàng)建config文件。

進(jìn)階

如果你只是想在本地控制遠(yuǎn)程機(jī)器,上述的ssh命令已經(jīng)能夠滿足你,但是關(guān)于ssh還有很多拓展。

配置文件

一般我們想要更深刻的了解Linux的軟件,基本都是從它的配置文件入手。

OpenSSH分為服務(wù)端和客戶端,它的配置文件也有兩個(gè),sshd_config(server配置文件)和ssh_config(client配置文件)。

  • 會(huì)發(fā)現(xiàn)一般Linux系統(tǒng)一些軟件進(jìn)程是name加一個(gè)d,這個(gè)d的含義是守護(hù)進(jìn)程(daemon)。
ssh_config

ssh_config是OpenSSH客戶端的配置文件,這是一個(gè)全局的配置文件,文件內(nèi)容大多為遠(yuǎn)程連接時(shí)使用的參數(shù),文件的路徑/etc/ssh/ssh_config。雖然這個(gè)文件是客戶端的全局配置文件,但是一般不會(huì)對(duì)這個(gè)配置文件進(jìn)行修改。在配置文件中可以查看到下列內(nèi)容。

ssh,ssh,運(yùn)維,linux,centos

由上圖可知:ssh客戶端的全局配置文件的優(yōu)先級(jí)是最低的,優(yōu)先級(jí)最高是使用命令時(shí)指定的參數(shù),其次為單個(gè)用戶的配置文件(路徑設(shè)置~/.ssh/config,這個(gè)文件默認(rèn)不存在,需要用戶進(jìn)行創(chuàng)建)。

基于以上的規(guī)則,修改的客戶端全局配置文件并不是一個(gè)很好的選擇,當(dāng)需要對(duì)某一參數(shù)進(jìn)行改變時(shí),直接在使用ssh命令連接時(shí)指定相對(duì)應(yīng)的參數(shù)更加方便靈活。

sshd_config

sshd_config是OpenSSH服務(wù)端的配置文件,路徑etc/ssh/sshd_config,該文件包括服務(wù)端的安全配置等。ssh服務(wù)器的連接配置都由這個(gè)文件決定,包括SSH協(xié)議連接端口號(hào)等。

常規(guī)sshd_config文件內(nèi)容:

	 1	#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
     2	
     3	# This is the sshd server system-wide configuration file.  See
     4	# sshd_config(5) for more information.
     5	
     6	# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
     7	
     8	# The strategy used for options in the default sshd_config shipped with
     9	# OpenSSH is to specify options with their default value where
    10	# possible, but leave them commented.  Uncommented options override the
    11	# default value.
    12	
    13	# If you want to change the port on a SELinux system, you have to tell
    14	# SELinux about this change.
    15	# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
    16	#
    17	#Port 22
    18	#AddressFamily any
    19	#ListenAddress 0.0.0.0
    20	#ListenAddress ::
    21	
    22	HostKey /etc/ssh/ssh_host_rsa_key
    23	#HostKey /etc/ssh/ssh_host_dsa_key
    24	HostKey /etc/ssh/ssh_host_ecdsa_key
    25	HostKey /etc/ssh/ssh_host_ed25519_key
    26	
    27	# Ciphers and keying
    28	#RekeyLimit default none
    29	
    30	# Logging
    31	#SyslogFacility AUTH
    32	
    33	#LogLevel INFO
    34	
    35	# Authentication:
    36	
    37	#LoginGraceTime 2m
    38	#PermitRootLogin yes
    39	#StrictModes yes
    40	#MaxAuthTries 6
    41	#MaxSessions 10
    42	
    43	#PubkeyAuthentication yes
    44	
    45	# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
    46	# but this is overridden so installations will only check .ssh/authorized_keys
    47	AuthorizedKeysFile	.ssh/authorized_keys
    48	
    49	#AuthorizedPrincipalsFile none
    50	
    51	#AuthorizedKeysCommand none
    52	#AuthorizedKeysCommandUser nobody
    53	
    54	# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
    55	#HostbasedAuthentication no
    56	# Change to yes if you don't trust ~/.ssh/known_hosts for
    57	# HostbasedAuthentication
    58	#IgnoreUserKnownHosts no
    59	# Don't read the user's ~/.rhosts and ~/.shosts files
    60	#IgnoreRhosts yes
    61	
    62	# To disable tunneled clear text passwords, change to no here!
    63	#PermitEmptyPasswords no
    64	
    65	
    66	# Change to no to disable s/key passwords
    67	#ChallengeResponseAuthentication yes
    68	ChallengeResponseAuthentication no
    69	
    70	# Kerberos options
    71	#KerberosAuthentication no
    72	#KerberosOrLocalPasswd yes
    73	#KerberosTicketCleanup yes
    74	#KerberosGetAFSToken no
    75	#KerberosUseKuserok yes
    76	
    77	# GSSAPI options
    78	GSSAPIAuthentication yes
    79	GSSAPICleanupCredentials no
    80	#GSSAPIStrictAcceptorCheck yes
    81	#GSSAPIKeyExchange no
    82	#GSSAPIEnablek5users no
    83	
    84	# Set this to 'yes' to enable PAM authentication, account processing,
    85	# and session processing. If this is enabled, PAM authentication will
    86	# be allowed through the ChallengeResponseAuthentication and
    87	# PAM authentication via ChallengeResponseAuthentication may bypass
    88	# the setting of "PermitRootLogin without-password".
    89	# If you just want the PAM account and session checks to run without
    90	# and ChallengeResponseAuthentication to 'no'.
    91	# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
    92	# problems.
    93	UsePAM yes
    94	
    95	#AllowAgentForwarding yes
    96	#AllowTcpForwarding yes
    97	#GatewayPorts no
    98	X11Forwarding yes
    99	#X11DisplayOffset 10
   100	#X11UseLocalhost yes
   101	#PermitTTY yes
   102	#PrintMotd yes
   103	#PrintLastLog yes
   104	#TCPKeepAlive yes
   105	#UseLogin no
   106	#UsePrivilegeSeparation sandbox
   107	#PermitUserEnvironment no
   108	#Compression delayed
   109	#ClientAliveInterval 0
   110	#ClientAliveCountMax 3
   111	#ShowPatchLevel no
   112	#UseDNS yes
   113	#PidFile /var/run/sshd.pid
   114	#MaxStartups 10:30:100
   115	#PermitTunnel no
   116	#ChrootDirectory none
   117	#VersionAddendum none
   118	
   119	# no default banner path
   120	#Banner none
   121	
   122	# Accept locale-related environment variables
   123	AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
   124	AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
   125	AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
   126	AcceptEnv XMODIFIERS
   127	
   128	# override default of no subsystems
   129	Subsystem	sftp	/usr/libexec/openssh/sftp-server
   130	
   131	# Example of overriding settings on a per-user basis
   132	#Match User anoncvs
   133	#	X11Forwarding no
   134	#	AllowTcpForwarding no
   135	#	PermitTTY no
   136	#	ForceCommand cvs server
   137	
   138	UseDNS no
   139	AddressFamily inet
   140	SyslogFacility AUTHPRIV
   141	PermitRootLogin yes
   142	PasswordAuthentication yes
  1. 修改端口號(hào),修改17行內(nèi)容,取消注釋,將22改成其他值,然后重啟刷新服務(wù)(守護(hù)進(jìn)程都需要重新啟動(dòng)服務(wù)才能使用新的配置),這時(shí)默認(rèn)端口號(hào)將會(huì)改成其他值。
    例:將端口號(hào)改為23后,如何使用ssh命令連接。
    這個(gè)時(shí)候連接該機(jī)器則需要使用23號(hào)端口,不然會(huì)連接不上,使用ssh命令指定相應(yīng)的23端口如下所示,三種格式都是可以使用-p參數(shù)的。

    # 使用-p參數(shù)指定接口
    ssh 用戶名@hostname -p 23
    
  2. 19行和20行,ListenAddress,指定SSH監(jiān)聽(tīng)的IP地址,19行是ipv4地址,20行是ipv6地址,通過(guò)更改設(shè)置,可以指定哪些IP地址的機(jī)器通過(guò)SSH連接本機(jī)(0.0.0.0和::代表監(jiān)聽(tīng)所有IP地址)。

  3. 31行,#SyslogFacility AUTH這個(gè)是日志相關(guān)的配置,指定記錄日志facility,與日志記錄相關(guān),在日志學(xué)習(xí)中可以學(xué)到。

  4. 38行,#PermitRootLogin yes設(shè)置是否允許使用root用戶進(jìn)行遠(yuǎn)程登錄。默認(rèn)為yes表示允許,去掉注釋改為no則不再允許使用root用戶遠(yuǎn)程登錄。

  5. 43行,#PubkeyAuthentication yes設(shè)置是否允許使用密鑰認(rèn)證,上文提到ssh有兩種認(rèn)證方式:密碼認(rèn)證和密鑰認(rèn)證。設(shè)置為no禁止使用密鑰認(rèn)證。

  6. 142行,#PasswordAuthentication yes設(shè)置是否允許使用密碼認(rèn)證,設(shè)置為no則禁止密碼認(rèn)證。

  7. 123行,#Banner none設(shè)置歡迎橫幅,就是遠(yuǎn)程登錄之后,出現(xiàn)的文字。


其他基本不用的配置:

  1. 23行,HostKey指定ssh主機(jī)密鑰路徑,每個(gè)加密方法一個(gè)加密路徑。
  2. 69行,ChallengeResponseAuthentication no設(shè)置挑戰(zhàn)-響應(yīng)式身份認(rèn)證
  3. 93行,UsePAM yes設(shè)置使用PAM認(rèn)證(可以理解為一個(gè)認(rèn)證機(jī)制,密碼認(rèn)證是PAM的認(rèn)證模塊之一)

  • 可能每臺(tái)機(jī)器配置文件的行數(shù)會(huì)不相同,這里的行數(shù)只是上面示例配置文件的行數(shù)

? 以上是常見(jiàn)的關(guān)于sshd的配置。那么修改這些配置的原因是什么?直接使用默認(rèn)配置就已經(jīng)能夠正常使用ssh協(xié)議,修改配置的意義涉及另一個(gè)方面:安全。

? 每臺(tái)Linux系統(tǒng)的ssh默認(rèn)配置是相同的,這樣所有人都知道ssh協(xié)議默認(rèn)是22號(hào)端口,那么這個(gè)時(shí)候IP地址再泄露,可以通過(guò)猜密碼的方式去惡意的遠(yuǎn)程控制主機(jī)。而修改這些默認(rèn)設(shè)置,比如修改端口號(hào),其他人就很難知道該主機(jī)的ssh端口號(hào),再進(jìn)一步比如禁止root用戶登錄,降低遠(yuǎn)程登錄的權(quán)限,通過(guò)一步步的加固,可以讓Linux服務(wù)器更加安全。

命令進(jìn)階

上文提到了ssh命令進(jìn)行遠(yuǎn)程連接,這部分對(duì)ssh命令的參數(shù)進(jìn)行詳細(xì)的講解。

ssh 命令
  1. 遠(yuǎn)程登錄,前面說(shuō)過(guò)了,不再贅述(包括使用端口號(hào)登錄)

  2. 登錄同時(shí)執(zhí)行命令

    # 執(zhí)行command格式、
    # 命令執(zhí)行完自動(dòng)斷開(kāi)遠(yuǎn)程連接
    ssh 用戶名@hostname 'command'
    
    # 登錄同時(shí)執(zhí)行l(wèi)s命令
    ssh user@hostname 'ls'
    
    # 執(zhí)行多條command,使用;分隔
    ssh 用戶名@hostname 'command1;command2;command3'
    
    # 例
    ssh user@hostname 'ls;pwd;whoami'
    
  3. -t選項(xiàng):提供互動(dòng)式的shell,當(dāng)執(zhí)行命令需要一個(gè)互動(dòng)的shell時(shí)使用,例如vim命令

    # 不加-t選項(xiàng)時(shí),下面命令報(bào)錯(cuò)
    ssh user@hostname 'vim'
    
    # 添加-t不報(bào)錯(cuò)
    ssh -t user@hostname 'vim'
    
  4. -f-F

    • -f:后臺(tái)運(yùn)行ssh連接
    • -F:指定參數(shù)配置文件,后接文件路徑(path/ssh_config)
  5. -v(小寫):顯示命令的詳細(xì)執(zhí)行過(guò)程

  6. -q(quiet):靜默模式,不會(huì)輸出警告信息(用了參數(shù)輸錯(cuò)密碼也不會(huì)提示,如下圖所示)

ssh,ssh,運(yùn)維,linux,centos

  1. ssh其他參數(shù)大多不常用。
  • ssh還有一個(gè)端口轉(zhuǎn)發(fā)的功能,但是大多時(shí)候用不上,類似端口轉(zhuǎn)發(fā)的場(chǎng)景基本也不是用ssh去實(shí)現(xiàn),這里就不作講解了。
scp 命令

當(dāng)需要在本地和遠(yuǎn)程進(jìn)行文件傳輸時(shí)就可以使用scp命令,scpcp命令效果完全相同(拷貝文件,包括拷貝多個(gè)文件),只是scp是遠(yuǎn)程拷貝,而cp是本地拷貝。scp分為將遠(yuǎn)程文件拷貝到本地和將本地文件拷貝到遠(yuǎn)端。

命令格式:

  1. 將本地文件拷貝至遠(yuǎn)程機(jī)器

    # 將本地機(jī)器中的文件復(fù)制到遠(yuǎn)程機(jī)器中
    scp /path/local_file remote_username@remote_ip:/path/target_file
    
    # 拷貝多個(gè)文件
    scp file1.txt file2.txt file3.txt username@hostname:/remote/directory/
    
    # 添加-r參數(shù),遞歸拷貝目錄
    scp -r /path/local_directory remote_username@remote_ip:/path/target_directory
    
    • 當(dāng)不指定target_file的時(shí)候,會(huì)在遠(yuǎn)程機(jī)器上產(chǎn)生local_file同名文件
  2. 將遠(yuǎn)程機(jī)器文件拷貝至本地

    # 將遠(yuǎn)程機(jī)器中的文件復(fù)制到本地機(jī)器中
    # 遠(yuǎn)程拷貝多個(gè)文件的命令形式比較繁瑣,就不寫了
    scp remote_username@remote_ip:/path/source_file /path/target_file
    
    • 也可使用-r參數(shù)

其他參數(shù)

  1. -v:輸出更詳細(xì)

  2. -P(大寫P):指定ssh協(xié)議端口號(hào)

    # 指定使用23號(hào)端口
    scp -P 23 /path/local_file remote_username@remote_ip:/path/target_file
    
  3. -l:限制傳輸速率(單位:kbit/s)

sftp 命令

sftp是一種通過(guò)安全通道進(jìn)行文件傳輸?shù)膮f(xié)議。與scp命令相同,sftp命令也能夠進(jìn)行本地和遠(yuǎn)端的文件傳輸。

sftp與scp的區(qū)別:scp在拷貝完文件之后會(huì)立即退出遠(yuǎn)程控制,不會(huì)提供交互式的shell,而sftp是交互式的,不需要一次完成,并且sftp有專門的命令語(yǔ)法對(duì)遠(yuǎn)程和本地機(jī)器的文件拷貝進(jìn)行控制,功能更強(qiáng)大。

命令格式:

sftp remote_username@remote_ip

sftp是先使用ssh協(xié)議連接到遠(yuǎn)程主機(jī),然后提供一個(gè)交換式shell,通過(guò)這個(gè)交互式的shell運(yùn)行自帶的命令實(shí)現(xiàn)文件傳輸。

sftp成功之后,會(huì)發(fā)現(xiàn)第一標(biāo)識(shí)符變?yōu)?code>sftp>,這時(shí)已經(jīng)切換到交互式shell:

ssh,ssh,運(yùn)維,linux,centos

當(dāng)?shù)谝粯?biāo)識(shí)符變?yōu)?code>sftp之后,就可使用sftp自帶的命令進(jìn)行文件傳輸。

sftp自帶命令

sftp自帶命令與平常的Linux命令十分相似,然后控制本地主機(jī)和遠(yuǎn)程主機(jī)命令是一致的,唯一的區(qū)別:控制本地機(jī)器時(shí)需要在命令之前加!,不加!控制遠(yuǎn)程機(jī)器。

命令如下所示:

# 與Linux中命令完全相同
pwd
ls
cd
mkdir
rmdir:刪除命令

# 不同指令,方括號(hào)中的參數(shù)可選,不指定本地或遠(yuǎn)程目錄時(shí),默認(rèn)放在當(dāng)前目錄
put local_file [remotefile]:將本地文件傳輸?shù)竭h(yuǎn)程主機(jī)
get remotefile [local_file]:將遠(yuǎn)程文件傳輸?shù)奖緳C(jī)
exit:退出sftp

部分操作演示:

在host1/root創(chuàng)建文件test,然后使用sftp遠(yuǎn)程連接host2,host2/root不創(chuàng)建test目錄

  1. host1sftp連接host2之后直接使用ls命令查看的是host2的/root,加上!則是查看host1的/root

ssh,ssh,運(yùn)維,linux,centos

  1. 將host1的test文件傳輸至host2

    ssh,ssh,運(yùn)維,linux,centos

ssh 密鑰(配置免密通道)

最開(kāi)始介紹了ssh的密碼認(rèn)證,ssh還有另一種更方便更安全的常用認(rèn)證方式:密鑰認(rèn)證。在進(jìn)行相關(guān)配置之后,連接比密碼認(rèn)證更便捷,只需配置一次,之后就不需要像密碼認(rèn)證一般每次連接輸入密碼(免密通道),而密碼認(rèn)證,每次都需要輸入密碼進(jìn)行認(rèn)證,有泄露密碼的風(fēng)險(xiǎn)。

ssh密鑰認(rèn)證算法原理使用了非對(duì)稱加密算法原理,通過(guò)使用公鑰和私鑰來(lái)實(shí)現(xiàn)。

非對(duì)稱加密

非對(duì)稱加密是一種使用不同的密鑰進(jìn)行加密和解密的加密算法,另外還有使用相同密鑰加密解密的算法——對(duì)稱加密算法。在非對(duì)稱加密中,有兩個(gè)密鑰:公鑰(Public Key)和私鑰(Private Key)。公鑰用于加密數(shù)據(jù),而私鑰用于解密數(shù)據(jù),使用不同的密鑰進(jìn)行加密解密安全性更高。

非對(duì)稱加密通信過(guò)程:

在兩臺(tái)主機(jī)進(jìn)行數(shù)據(jù)通信時(shí),接受方將生成的公鑰傳送給發(fā)送方,發(fā)送方使用接收方的公鑰對(duì)數(shù)據(jù)加密傳輸給接收方,接收方使用私鑰進(jìn)行解密。使用非對(duì)稱加密時(shí),只將公鑰傳輸給對(duì)方,私鑰不發(fā)送,并且只有私鑰能夠?qū)π畔⑦M(jìn)行解密,對(duì)比對(duì)稱加密,安全性更高。

常用的非對(duì)稱加密算法:rsa,dsa等

ssh 密鑰認(rèn)證原理

雖然ssh密鑰認(rèn)證使用非對(duì)稱加密的原理,但是ssh密鑰認(rèn)證過(guò)程并不是與非對(duì)稱加密通信過(guò)程完全相同,而是和數(shù)字簽名的過(guò)程的比較相似,數(shù)字簽名也使用了非對(duì)稱加密,但是它是私鑰加密,公鑰解密,用于識(shí)別發(fā)送方的身份和驗(yàn)證數(shù)據(jù)的完整性。 ssh使用數(shù)字簽名相似的原理進(jìn)行了身份驗(yàn)證。

在SSH密鑰認(rèn)證中,客戶端會(huì)生成一對(duì)密鑰:私鑰和公鑰。私鑰保存在客戶端本地,而公鑰則傳輸?shù)椒?wù)器上。當(dāng)客戶端嘗試連接到服務(wù)器時(shí),客戶端會(huì)使用私鑰對(duì)一個(gè)挑戰(zhàn)(challenge)進(jìn)行加密,并將加密結(jié)果發(fā)送給服務(wù)器。服務(wù)器端會(huì)使用之前保存的公鑰來(lái)驗(yàn)證客戶端發(fā)送的數(shù)據(jù)。如果驗(yàn)證成功,服務(wù)器就確認(rèn)客戶端的身份,允許其登錄。

ssh 配置免密通道實(shí)操

使用ssh公鑰認(rèn)證時(shí)請(qǐng)確保ssh服務(wù)器開(kāi)啟了公鑰認(rèn)證權(quán)限配置,下面是實(shí)現(xiàn)的具體步驟:

host1模擬本地機(jī)器,host2模擬遠(yuǎn)程機(jī)器

  1. 首先在ssh客戶端生成公鑰和私鑰對(duì)

    # 使用ssh-keygen命令生成密鑰對(duì),不帶參數(shù)時(shí)默認(rèn)使用rsa算法
    ssh-keygen
    
    # 使用-t參數(shù)指定非對(duì)稱加密算法
    ssh-keygen -t dsa
    
    • 使用上述命令時(shí),會(huì)有兩次輸入請(qǐng)求:

      ssh,ssh,運(yùn)維,linux,centos

      1. 詢問(wèn)你將密鑰對(duì)放置位置,默認(rèn)放置在~/.ssh路徑下。不設(shè)置直接回車即可
      2. 詢問(wèn)你是否對(duì)密鑰對(duì)設(shè)置密碼(一般不設(shè)置,更方便,不然每次連接還是需要輸入密碼)。不設(shè)置直接回車即可, 這里需要回車兩次,第二次是確認(rèn)密碼
    • 當(dāng)生成完畢之后,可以在~/.ssh路徑下可以看到新生成的密鑰對(duì)(會(huì)多出兩個(gè)文件),在不指定文件名稱時(shí),文件名稱為加密算法名稱,其中.pub結(jié)尾的為公鑰

      ssh,ssh,運(yùn)維,linux,centos

  2. 生成完畢之后,將公鑰發(fā)送給需要遠(yuǎn)程連接的機(jī)器

    # 可以使用-i參數(shù)指定傳送的公鑰文件,如不指定自動(dòng)在~/.ssh中進(jìn)行查找
    # 直接使用ssh-copy-id命令發(fā)送公鑰
    ssh-copy-id username@hostname
    
    # 使用-i參數(shù)指定公鑰文件
    ssh-copy-id -i key_file username@hostname
    
    • 傳輸公鑰時(shí),會(huì)要求輸入服務(wù)器端的用戶密碼

    • 傳輸完成后,在host2的~/.ssh下可以看到多了個(gè)文件authorized_keys,這個(gè)文件儲(chǔ)存有host1的公鑰,如下圖,圖二為文件內(nèi)容:

      ssh,ssh,運(yùn)維,linux,centos

ssh,ssh,運(yùn)維,linux,centos

  1. 將公鑰發(fā)送給服務(wù)器之后即可進(jìn)行連接

    # 使用ssh進(jìn)行連接,會(huì)發(fā)現(xiàn)不再提醒你輸入密碼,直接連接成功
    # 只要在生成密鑰時(shí)未設(shè)置密碼,之后的ssh連接都不再需要輸入密碼
    ssh 用戶名@hostname
    

其他

這部分是一些和ssh協(xié)議有關(guān)系的操作或者命令的簡(jiǎn)單介紹

rsync命令

rsync命令是一個(gè)文件同步備份的命令,除了本地同步,還支持遠(yuǎn)程同步,可以將其理解為remote sync(遠(yuǎn)程同步)。除了支持遠(yuǎn)程同步備份與cp,tar等命令不同之外,rsync是一個(gè)增量同步的命令,只有數(shù)據(jù)存在差異時(shí),才會(huì)覆蓋不同的部分。

rsync命令十分好用,這個(gè)命令底層有兩個(gè)實(shí)現(xiàn)協(xié)議:ssh協(xié)議和rsync協(xié)議。因?yàn)樗灿玫搅藄sh協(xié)議這里順帶講一下。(只是簡(jiǎn)單提一下)

rsync和scp很相像,但是rsync的性能比scp好,還支持增量同步,而且rsync支持更復(fù)雜的參數(shù),有更多的控制選項(xiàng),rsync相當(dāng)于scp的上位命令。

使用rsync命令需要兩臺(tái)機(jī)器都安裝rsync命令。

# 安裝rsync
yum install rsync -y
sudo apt install rsync

rsync命令有幾種格式:

# 用于本地備份
rsync SRC DEST

# 將本地?cái)?shù)據(jù)備份到遠(yuǎn)程機(jī)器上
rsync SRC [USER@]HOST:DEST

# 將遠(yuǎn)程數(shù)據(jù)備份到本地
rsync [USER@]HOST:SRC DEST

# 剩下的兩個(gè)格式和上面兩個(gè)是相同的,只是用來(lái)兩個(gè)`:`,這代表使用rsync協(xié)議,而上面的命令則是使用ssh協(xié)議
rsync [USER@]HOST::SRC DEST
rsync SRC [USER@]HOST::DEST

可用參數(shù):

  1. -a, --archive: 歸檔模式,遞歸復(fù)制文件和文件夾,并保留所有屬性、權(quán)限和時(shí)間信息。
  2. -v, --verbose: 顯示詳細(xì)輸出,包括復(fù)制的文件列表和進(jìn)度信息。
  3. -r, --recursive: 遞歸復(fù)制目錄及其內(nèi)容。
  4. -u, --update: 僅復(fù)制源文件中更新的部分。
  5. -z, --compress: 在傳輸過(guò)程中壓縮文件,可以加快傳輸速度。
  6. -P, --partial --progress: 顯示傳輸過(guò)程的進(jìn)度信息,并保留未完成的文件。
  7. --delete: 刪除目標(biāo)路徑上多余的文件。

rsync相較于使用ssh協(xié)議,使用更多的是rsync協(xié)議,一般稱為rsync-daemon模式,這個(gè)模式更穩(wěn)定,更安全,只是沒(méi)有但用rsync命令那么靈活,需要在被傳輸機(jī)器上進(jìn)行相關(guān)配置,這里就不講解了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-744404.html

到了這里,關(guān)于ssh詳解–讓你徹底學(xué)會(huì)ssh的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【QA】Linux-CentOS徹底卸載MySQL

    Linux系統(tǒng)下,若要卸載干凈默認(rèn)的MySQL,從而安裝新的版本,需要卸載干凈,不然會(huì)在不經(jīng)意間影響后續(xù)安裝 文章演示的系統(tǒng):Linux CentOS 查詢到相關(guān)安裝包,進(jìn)行后續(xù)卸載 以下是查詢結(jié)果: 對(duì)于我這臺(tái)電腦來(lái)講: /var/lib/docker 目錄下是docker配置的有關(guān)mysql的掛載信息,不用管

    2024年01月18日
    瀏覽(28)
  • 云計(jì)算Linux運(yùn)維——基礎(chǔ)服務(wù)應(yīng)用——SSH遠(yuǎn)程連接(1)

    云計(jì)算Linux運(yùn)維——基礎(chǔ)服務(wù)應(yīng)用——SSH遠(yuǎn)程連接(1)

    目錄 點(diǎn)關(guān)注不迷路 SSH遠(yuǎn)程連接 一、SSH介紹 1、管理Linux服務(wù)器的方式 2、確保Linux服務(wù)正常運(yùn)行 3、客戶端軟件 二、ssh遠(yuǎn)程連接操作 1、ssh遠(yuǎn)程連接 2、執(zhí)行遠(yuǎn)程命令 3、遠(yuǎn)程拷貝文件 三、SSH怎么實(shí)現(xiàn)加密? 1、數(shù)據(jù)加密 2、數(shù)據(jù)加密算法 3、對(duì)稱加密算法 4、非對(duì)稱加密算法 ?

    2024年02月02日
    瀏覽(26)
  • Linux(CentOS)運(yùn)維腳本工具集合

    備份指定目錄 查看CPU、磁盤、內(nèi)存使用率 返回結(jié)果 顯示基礎(chǔ)信息-詳細(xì) 查看進(jìn)程pid,啟動(dòng)時(shí)間,持續(xù)執(zhí)行時(shí)間 根據(jù)進(jìn)程id查看工作目錄 清除Linux系統(tǒng)占用緩存 查看端口是否使用 demo: 查看進(jìn)程使用的端口 demo 查看端口所在進(jìn)程 demo 查看目錄下各目錄占用空間以及最大文件或

    2024年02月12日
    瀏覽(24)
  • Linux運(yùn)維實(shí)戰(zhàn):Centos7.6部署wingftpserver

    Linux運(yùn)維實(shí)戰(zhàn):Centos7.6部署wingftpserver

    Wing FTP Server是一款優(yōu)秀且高速的跨平臺(tái)FTP服務(wù)器軟件,對(duì)比Windows中自帶的 FTP 服務(wù)器,它支持可伸縮的處理器架構(gòu)并采用異步IO,在速度和效率方面遙遙領(lǐng)先于其他同類產(chǎn)品,穩(wěn)定可靠, 高負(fù)載的同時(shí)也能持續(xù)地正常運(yùn)行,在網(wǎng)絡(luò)運(yùn)維中它契合企業(yè)和學(xué)校的文件傳輸,除了基

    2024年01月20日
    瀏覽(17)
  • CentOS/Linux系統(tǒng)安裝SSH并配置SSH登錄密鑰

    CentOS/Linux系統(tǒng)安裝SSH并配置SSH登錄密鑰

    ????????CentOS/Linux系統(tǒng)命令行輸入如下命令: ????????用vim打開(kāi)配置文件 /etc/ssh/sshd_config ????????將上圖的 PermitRootLogin , RSAAuthentication , PubkeyAuthentication 的設(shè)置為YES ?????

    2024年02月16日
    瀏覽(24)
  • Linux、CentOS超詳細(xì)修改ip方法,手把手步驟教學(xué),小白也能學(xué)會(huì)

    Linux、CentOS超詳細(xì)修改ip方法,手把手步驟教學(xué),小白也能學(xué)會(huì)

    目錄 1.切換root用戶 ? 1.1輸入命令 ? 1.2輸入密碼 ? 1.2成功登錄 ? 1.3登錄失敗 2.使用root修改配置文件 ? 2.1輸入命令 ? 2.2進(jìn)入編輯模式 ? ?2.2.1修改BOOTPROTO ? ?2.2.2修改ONBOOT ? ?2.2.3修改ip和掩碼等 ? ?2.2.4結(jié)果 ?2.3退出保存 ?2.4查看修改是否成功 ?3.重啟網(wǎng)絡(luò)服務(wù) 4.查看ip是否

    2024年02月07日
    瀏覽(21)
  • 簡(jiǎn)單幾步學(xué)會(huì)Linux用戶使用SSH遠(yuǎn)程免密登錄,LinuxSSH服務(wù)器配置允許/禁止某些用戶遠(yuǎn)程登錄

    簡(jiǎn)單幾步學(xué)會(huì)Linux用戶使用SSH遠(yuǎn)程免密登錄,LinuxSSH服務(wù)器配置允許/禁止某些用戶遠(yuǎn)程登錄

    本文基于Linux上CentOS 7版本配合Xshell 7進(jìn)行演示 目錄 一.SSH簡(jiǎn)介 1.介紹 2.工作流程 二.具體配置免密步驟 1.配置前準(zhǔn)備工作 2.正式配置過(guò)程 三.在服務(wù)器端配置SSH遠(yuǎn)程黑白名單 1.配置文件/etc/ssh/sshd_config部分參數(shù)解析 2.配置遠(yuǎn)程登錄黑白名單 SSH用于計(jì)算機(jī)之間的加密登錄,是一類

    2024年02月22日
    瀏覽(29)
  • 無(wú)公網(wǎng)IP,SSH遠(yuǎn)程連接Linux CentOS

    無(wú)公網(wǎng)IP,SSH遠(yuǎn)程連接Linux CentOS

    轉(zhuǎn)載自cpolar內(nèi)網(wǎng)穿透的文章:無(wú)公網(wǎng)IP,SSH遠(yuǎn)程連接Linux CentOS【內(nèi)網(wǎng)穿透】 本次教程我們來(lái)實(shí)現(xiàn)如何在外公網(wǎng)環(huán)境下,SSH遠(yuǎn)程連接家里/公司的Linux CentOS服務(wù)器,無(wú)需公網(wǎng)IP,也不需要設(shè)置路由器。 【SSH遠(yuǎn)程服務(wù)器】在外遠(yuǎn)程連接Linux服務(wù)器「無(wú)公網(wǎng)IP」 cpolar官網(wǎng):cpolar - 安全

    2024年02月06日
    瀏覽(18)
  • 虛擬機(jī)上的linux centos7無(wú)法連接ssh

    虛擬機(jī)上的linux centos7無(wú)法連接ssh

    1、排查有沒(méi)有安裝 openssh-server ,在終端中輸入 此處顯示已經(jīng)安裝了 openssh-server ,如果又沒(méi)任何輸出顯示表示沒(méi)有安裝 openssh-server ,通過(guò)輸入 yum install openssh-server 進(jìn)行安裝 2、找到了 /etc/ssh/ 目錄下的sshd服務(wù)配置文件 sshd_config,用Vim編輯器打開(kāi) 將文件中,關(guān)于監(jiān)聽(tīng)端口、監(jiān)

    2024年02月07日
    瀏覽(22)
  • CentOS Linux服務(wù)器無(wú)法遠(yuǎn)程 SSH 登錄故障處理

    在管理 CentOS Linux 服務(wù)器時(shí),遠(yuǎn)程 SSH 登錄是一項(xiàng)關(guān)鍵功能。然而,有時(shí)候你可能會(huì)遇到無(wú)法通過(guò) SSH 遠(yuǎn)程登錄到服務(wù)器的問(wèn)題。這篇文章將為你提供一些故障處理的步驟,幫助你解決這個(gè)問(wèn)題。 以下是一些可能導(dǎo)致無(wú)法遠(yuǎn)程 SSH 登錄的常見(jiàn)問(wèn)題和相應(yīng)的解決方法: 確認(rèn) SSH 服

    2024年02月05日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包