0

0

linux ssh使用的方法有哪些

王林

王林

发布时间:2023-05-22 23:58:13

|

1493人浏览过

|

来源于亿速云

转载

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 1241244
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”。

雾象
雾象

WaytoAGI推出的AI动画生成引擎

下载

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.6万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号