首页 运维 linux运维 linux ssh使用的方法有哪些

linux ssh使用的方法有哪些

May 22, 2023 pm 11:58 PM
linux ssh

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使用的方法有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

notepad怎么运行java代码 notepad怎么运行java代码 Apr 16, 2025 pm 07:39 PM

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

vscode 无法安装扩展 vscode 无法安装扩展 Apr 15, 2025 pm 07:18 PM

VS Code扩展安装失败的原因可能包括:网络不稳定、权限不足、系统兼容性问题、VS Code版本过旧、杀毒软件或防火墙干扰。通过检查网络连接、权限、日志文件、更新VS Code、禁用安全软件以及重启VS Code或计算机,可以逐步排查和解决问题。

Linux体系结构:揭示5个基本组件 Linux体系结构:揭示5个基本组件 Apr 20, 2025 am 12:04 AM

Linux系统的五个基本组件是:1.内核,2.系统库,3.系统实用程序,4.图形用户界面,5.应用程序。内核管理硬件资源,系统库提供预编译函数,系统实用程序用于系统管理,GUI提供可视化交互,应用程序利用这些组件实现功能。

vscode 可以用于 mac 吗 vscode 可以用于 mac 吗 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有强大的扩展功能、Git 集成、终端和调试器,同时还提供了丰富的设置选项。但是,对于特别大型项目或专业性较强的开发,VS Code 可能会有性能或功能限制。

vscode是什么 vscode是干什么用的 vscode是什么 vscode是干什么用的 Apr 15, 2025 pm 06:45 PM

VS Code 全称 Visual Studio Code,是一个由微软开发的免费开源跨平台代码编辑器和开发环境。它支持广泛的编程语言,提供语法高亮、代码自动补全、代码片段和智能提示等功能以提高开发效率。通过丰富的扩展生态系统,用户可以针对特定需求和语言添加扩展程序,例如调试器、代码格式化工具和 Git 集成。VS Code 还包含直观的调试器,有助于快速查找和解决代码中的 bug。

VSCode怎么用 VSCode怎么用 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) 是一款跨平台、开源且免费的代码编辑器,由微软开发。它以轻量、可扩展性和对众多编程语言的支持而著称。要安装 VSCode,请访问官方网站下载并运行安装程序。使用 VSCode 时,可以创建新项目、编辑代码、调试代码、导航项目、扩展 VSCode 和管理设置。VSCode 适用于 Windows、macOS 和 Linux,支持多种编程语言,并通过 Marketplace 提供各种扩展。它的优势包括轻量、可扩展性、广泛的语言支持、丰富的功能和版

git怎么查看仓库地址 git怎么查看仓库地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 仓库地址,请执行以下步骤:1. 打开命令行并导航到仓库目录;2. 运行 "git remote -v" 命令;3. 查看输出中的仓库名称及其相应的地址。

See all articles