千家信息网

linux ssh使用实例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇"linux ssh使用实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"l
千家信息网最后更新 2026年11月02日linux ssh使用实例分析

这篇"linux ssh使用实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"linux ssh使用实例分析"文章吧。

ssh全称secure shell,顾名思义就是非常安全的shell的意思,ssh协议是ietf(internet engineering task force)的network working group所制定的一种协议。ssh的主要目的是用来取代传统的telnet和r系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具,实现对远程登陆和远程执行命令加密。防止由于网络监听而出现的密码泄漏,对系统构成威胁。

ssh协议目前有ssh1和ssh2,ssh2协议兼容ssh1。目前实现ssh1和ssh2协议的主要软件有openssh和ssh communications security corporation 公司的ssh communications 软件。前者是openbsd组织开发的一款免费的ssh软件,后者是商业软件,因此在linux、freebsd、openbsd、netbsd等免费类unix系统种,通畅都使用openssh作为ssh协议的实现软件。因此,本文重点介绍一下openssh的使用。需要注意的是openssh和ssh communications的登陆公钥/私钥的格式是不同的,如果想用ssh communications产生的私钥/公钥对来登入到使用openssh的linux系统需要对公钥/私钥进行格式转换。

在出现ssh之前,系统管理员需要登入远程服务器执行系统管理任务时,都是用telnet来实现的,telnet协议采用明文密码传送,在传送过程中对数据也不加密,很容易被不怀好意的人在网络上监听到密码。同样,在ssh工具出现之前r系列命令也很流行(由于这些命令都以字母r开头,故把这些命令合称为r系列命令r是remote的意思),比如rexec是用来执行远程服务器上的命令的,和telnet的区别是telnet需要先登陆远程服务器再实行相关的命令,而r系列命令可以把登陆和执行命令并登出系统的操作整合在一起。这样就不需要为在远程服务器上执行一个命令而特地登陆服务器了。
ssh是一种加密协议,不仅在登陆过程中对密码进行加密传送,而且对登陆后执行的命令的数据也进行加密,这样即使别人在网络上监听并截获了你的数据包,他也看不到其中的内容。openssh已经是目前大多数linux和bsd操作系统(甚至cygwin)的标准组件,因此关于如何安装openssh本文就不再叙述了,如果不出意外,你的系统上必定已经安装好了openssh。

openssh软件包包含以下命令:

sshd ―― ssh服务端程序
sftp-server ―― sftp服务端程序(类似ftp但提供数据加密的一种协议)
scp ―― 非交互式sftp-server的客户端,用来向服务器上传/下载文件
sftp ―― 交互式sftp-server客户端,用法和ftp命令一样。
slogin ―― ssh的别名
ssh ―― ssh协议的客户端程序,用来登入远程系统或远程执行命令
ssh-add ―― ssh代理相关程序,用来向ssh代理添加dsa key
ssh-agent ―― ssh代理程序
ssh-keyscan ―― ssh public key 生成器

ssh最常用的使用方式是代替telnet进行远程登陆。不同于telnet的密码登陆,ssh还同时支持publickey、keybord interactive、gssapi等多种登入方式,不像telnet那样只有输入系统密码一种途径。目前最常用的登陆方式还是传统的password方式和publickey方式登陆。下面以redhat as4为例,举例说明这两种登陆方式的用法。

[root@mail ~]# ssh 172.18.6.227
the authenticity of host '172.18.6.227 (172.18.6.227)' can't be established.
rsa key fingerprint is 43:80:f2:e1:9b:b6:6e:c0:e2:dd:57:8f:ed:89:b3:81.
are you sure you want to continue connecting (yes/no)? yes
warning: permanently added '172.18.6.227′ (rsa) to the list of known hosts.
root@172.18.6.227's password:
last login: thu jul 12 18:47:47 2007 from 172.18.6.130
[root@qmail ~]#

第一次登陆后,ssh就会把登陆的ssh指纹存放在用户home目录的.ssh目录的know_hosts文件中,如果远程系统重装过系统,ssh指纹已经改变,你需要把 .ssh 目录下的know_hosts中的相应指纹删除,再登陆回答yes,方可登陆。请注意.ssh目录是开头是"."的隐藏目录,需要ls -a参数才能看到。而且这个目录的权限必须是700,并且用户的home目录也不能给其他用户写权限,否则ssh服务器会拒绝登陆。如果发生不能登陆的问题,请察看服务器上的日志文件/var/log/secure。通常能很快找到不能登陆的原因。

ssh远程执行命令:

[root@mail ~]# ssh 172.18.6.227 ls -l /
root@172.18.6.227's password:
total 1244
drwxr-xr-x 2 root root 4096 jun 26 04:02 bin
drwxr-xr-x 4 root root 4096 mar 29 11:17 boot
drwxr-xr-x 2 root root 4096 jan 25 11:26 command
drwxr-xr-x 15 root root 4096 jun 12 20:09 data
drwxr-xr-x 9 root root 5360 jul 2 13:38 dev
drwxr-xr-x 87 root root 12288 jul 11 04:02 etc
drwxr-xr-x 20 root root 4096 apr 10 10:54 home
drwxr-xr-x 2 root root 4096 aug 13 2004 initrd

输入正确的密码后,ssh会链接远程服务器的sshd服务器程序,然后执行远程服务器上的
ls -l /命令 ,并把输入结果传到本地服务器。相当于你先登陆到远程服务器,然后再实行命令ls -l /,最后再登出服务器。需要提醒的是,如果你需要登陆服务器并执行不止一个命令,必须要把命令用单引号或双引号引起来:

ssh 172.18.6.227 "cd /root && ls "

ssh的远程实行命令的功能是用来代替原始的r系列命令的,在ssh出现之前系统管理员们不得不用rexec, rsh等不安全的远程执行命令工具来完成同样的操作。这个功能在管理大批机器的时候是非常有用的,比如我要重启10.0.0.0/24网段内所有的服务器,只要输入一条命令:

for i in $(seq 1 254) ; do ssh 10.0.0.${i} reboot ; done

就可以完成重启所有服务器的操作,也许你会说,这要虽然不需要再登陆每一台服务器了,但是还是要每次输入密码,多麻烦啊。别急,下面要讲的用ssh public key方式登陆就是要解决问题。

采用public key登录:

openssh的ssh-keygen命令用来产生这样的私钥和公钥。

[root@mail ~]# ssh-keygen -b 1024 -t dsa -c gucuiwen@myserver.com
generating public/private dsa key pair.
#提示正在生成,如果选择4096长度,可能需要较长时间
enter file in which to save the key (/root/.ssh/id_dsa):
#询问把公钥和私钥放在那里,回车用默认位置即可
enter passphrase (empty for no passphrase):
#询问输入私钥密语,为了实现自动登陆,应该不要密语,直接回车
enter same passphrase again:
#再次提示输入密语,再次直接回车
your identification has been saved in /root/.ssh/id_dsa.
your public key has been saved in /root/.ssh/id_dsa.pub.
#提示公钥和私钥已经存放在/root/.ssh/目录下
the key fingerprint is:
71:e5:cb:15:d3:8c:05:ed:05:84:85:32:ce:b1:31:ce gucuiwen@myserver.com
#提示key的指纹

说明:
-b 1024 采用长度为1024字节的公钥/私钥对,最长4096字节,一般1024或2048就可以了,太长的话加密解密需要的时间也长。
-t dsa  采用dsa加密方式的公钥/私钥对,除了dsa还有rsa方式,rsa方式最短不能小于768字节长度。
-c gucuiwen@myserver.com 对这个公钥/私钥对的一个注释和说明,一般用所有人的邮件代替。可以省略不写,更多其他参数请man ssh-keygen。

[root@mail ~]# ls -l /root/.ssh
total 16
-rw--- 1 root root 668 jul 12 20:07 id_dsa
-rw-r-r- 1 root root 611 jul 12 20:07 id_dsa.pub
-rw-r-r- 1 root root 222 jul 12 19:37 known_hosts

产生的公钥/私钥文件在用户home目录的.ssh目录下,其中id_dsa.pub是公钥,把产生的公钥上传到需要登陆的服务器的对应用户目录的home目录的.ssh目录下,再一次强调用户自己的目录(home目录)必须不能有其他人可写的权限,.ssh目录的权限必须是700,即除了用户自己,其他人没有任何读写察看该目录的权限,否则ssh服务器会拒绝登陆。ssh默认的公钥文件是用户home目录下的.ssh目录下的authorized_keys文件,因此需要把产生的公钥以这个文件名放到服务器的/root/.ssh/目录下,这个文件中可以存放多个客户端的公钥文件,就好比一个大门上可以上很多锁,可以有不同的钥匙来尝试开锁,只要有一个锁被打开了,门就可以打开了。放到服务器上应该是这样子的:

私钥必须是600权限,否则ssh服务器会拒绝用户登陆。

大致就是这个样子了。现把/etc/ssh/ssh_config 和 /etc/ssh/sshd_config的配置说下。

/etc/ssh/ssh_config:


host *
选项"host"只对能够匹配后面字串的计算机有效。"*"表示所有的计算机。

forwardagent no
"forwardagent"设置连接是否经过验证代理(如果存在)转发给远程计算机。

forwardx11 no
"forwardx11"设置x11连接是否被自动重定向到安全的通道和显示集(display set)。

rhostsauthentication no
"rhostsauthentication"设置是否使用基于rhosts的安全验证。

rhostsrsaauthentication no
"rhostsrsaauthentication"设置是否使用用rsa算法的基于rhosts的安全验证。

rsaauthentication yes
"rsaauthentication"设置是否使用rsa算法进行安全验证。

passwordauthentication yes
"passwordauthentication"设置是否使用口令验证。

fallbacktorsh no
"fallbacktorsh"设置如果用ssh连接出现错误是否自动使用rsh。

usersh no
"usersh"设置是否在这台计算机上使用"rlogin/rsh"。

batchmode no
"batchmode"如果设为"yes",passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。

checkhostip yes
"checkhostip"设置ssh是否查看连接到服务器的主机的ip地址以防止dns欺骗。建议设置为"yes"。

stricthostkeychecking no
"stricthostkeychecking"如果设置成"yes",ssh就不会自动把计算机的密匙加入"$home/.ssh/known_hosts"文件,并且一旦计算机的密匙发生了变化,就拒绝连接。

identityfile ~/.ssh/identity
"identityfile"设置从哪个文件读取用户的rsa安全验证标识。

port 22
"port"设置连接到远程主机的端口。

cipher blowfish
"cipher"设置加密用的密码。

escapechar ~
"escapechar"设置escape字符。

/etc/ssh/sshd_config:


port 22
"port"设置sshd监听的端口号。

listenaddress 192.168.1.1
"listenaddress"设置sshd服务器绑定的ip地址。

hostkey /etc/ssh/ssh_host_key

"hostkey"设置包含计算机私人密匙的文件。

serverkeybits 1024
"serverkeybits"定义服务器密匙的位数。

logingracetime 600
"logingracetime"设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

keyregenerationinterval 3600
"keyregenerationinterval"设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

permitrootlogin no
"permitrootlogin"设置root能不能用ssh登录。这个选项一定不要设成"yes"。

ignorerhosts yes
"ignorerhosts"设置验证的时候是否使用"rhosts"和"shosts"文件。

ignoreuserknownhosts yes
"ignoreuserknownhosts"设置ssh daemon是否在进行rhostsrsaauthentication安全验证的时候忽略用户的"$home/.ssh/known_hosts"

strictmodes yes
"strictmodes"设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

x11forwarding no
"x11forwarding"设置是否允许x11转发。

printmotd yes
"printmotd"设置sshd是否在用户登录的时候显示"/etc/motd"中的信息。

syslogfacility auth
"syslogfacility"设置在记录来自sshd的消息的时候,是否给出"facility code"。

loglevel info
"loglevel"设置记录sshd日志消息的层次。info是一个好的选择。查看sshd的man帮助页,已获取更多的信息。

rhostsauthentication no
"rhostsauthentication"设置只用rhosts或"/etc/hosts.equiv"进行安全验证是否已经足够了。

rhostsrsaauthentication no
"rhostsrsa"设置是否允许用rhosts或"/etc/hosts.equiv"加上rsa进行安全验证。

rsaauthentication yes
"rsaauthentication"设置是否允许只有rsa安全验证。

passwordauthentication yes
"passwordauthentication"设置是否允许口令验证。

permitemptypasswords no
"permitemptypasswords"设置是否允许用口令为空的帐号登录。

allowusers admin
"allowusers"的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是dns名或ip地址。

将ssh2兼容格式的公钥转换成为openssh兼容格式

ssh-keygen -i -f identity.pub >> /root/.ssh/authorized_keys2

以上就是关于"linux ssh使用实例分析"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

服务 服务器 登陆 命令 目录 公钥 文件 用户 系统 验证 安全 方式 密码 加密 输入 权限 内容 时候 程序 计算机 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技图片 为想互联网科技怎么样 科技互联网产品 为想互联网科技 九亚互联网科技 上海卓越科技 互联网 国外互联网科技网站 中正互联网科技招聘 科技大学互联网专业好不好 成都玖崟互联网科技有限公司乐商圈怎么样 广州慧亚互联网科技怎么样 字节跳动和互联网科技 智腾互联网科技有限公司 互联网科技产业特征 互联网科技和信息 亳州好赞互联网科技有限公司 东莞新华互联网科技学校 广州新华互联网科技学校电竞方面 西安小鹰速贷互联网科技有限公司 互联网营销推广黑科技 互联网科技金融 广州宏创互联网科技 中国互联网有什么科技含量 洛阳昕诺飞互联网科技有限公司 四川慕妮娅互联网科技有限公司 互联网时代的科技公司 小米互联网科技园入驻 江苏互联网科技小贷 陕西彩京云互联网科技有限公司 北京品多多互联网科技有限公司
0