linux ssh使用的方法有哪些

75次阅读
没有评论

共计 5930 个字符,预计需要花费 15 分钟才能阅读完成。

本篇内容介绍了“linux ssh 使用的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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 使用的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计5930字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)