Linux 简单使用ssh命令
本文所有命令是在Ubuntu中测试的,可能有些命令不适用于其他版本的Linux。
SSH客户端如何连接SSH服务端
ssh -p [服务器端口号] [服务器登录账号]@[服务器IP或域名]编写一个登录脚本connect_ssh_server.sh(需输入密码)
#!/usr/bin/expect -f set host <你的SSH服务器 主机名或IP> set port <你的SSH服务器 端口> set user <你的SSH服务器 登录账号> set password <你的SSH服务器 登录密码> set timeout -1 spawn ssh -o StrictHostKeyChecking=no -p $port $user@$host expect "*assword:*" send "$password\r" interact expect eof编写一个登录脚本connect_ssh_server.sh(不需要输入密码,SSH无密码自动登录)
#!/usr/bin/expect -f set host <你的SSH服务器 主机名或IP> set port <你的SSH服务器 端口> set user <你的SSH服务器 登录账号> set timeout -1 spawn ssh -o StrictHostKeyChecking=no -p $port $user@$host interact expect eof执行connect_ssh_server.sh这个脚本时可能会遇到问题,解决方法如下
# 执行以下命令后,连接成功 ./connect_ssh_server.sh # 执行以下命令后,连接失败 sh connect_ssh_server.sh # 执行以下命令后,连接失败 . connect_ssh_server.shspawn ssh遇到的问题
如何实现SSH客户端无密码自动登录SSH服务器(也可用于实现git提交代码时无密码提交)
第一步:(客户端) 在SSH客户端执行以下操作
$ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub # 将id_rsa.pub上传到SSH服务器的helper账号的家目录 $ scp -P 22 ~/.ssh/id_rsa.pub helper@m.xyz.com:/home/helper第二步:(服务端) 在SSH服务端执行以下操作(以helper账号登录SSH服务器)
# 查看客户端上传的id_rsa.pub是否存在 helper@hgdm:~$ ls -l | grep id_rsa.pub -rw-rw-r-- 1 helper helper 0 Apr 7 11:23 id_rsa.pub # 将客户端的key追加到~/.ssh/authorized_keys的最后面 helper@hgdm:~$ cat id_rsa.pub >> ~/.ssh/authorized_keys # 必须把~/.ssh的权限设置为700,否则大概率遭遇失败 helper@hgdm:~$ chmod 700 ~/.ssh # 必须把~/.ssh/authorized_keys的权限设置为600,否则大概率遭遇失败 helper@hgdm:~$ chmod 600 ~/.ssh/authorized_keys第三步:(客户端) 执行ssh命令连接SSH服务器,检查是否实现了无密码登录。
ssh -p 22 helper@m.xyz.com如何通过SSH上传文件和下载文件 (使用scp命令)
把文件从本地电脑上传到SSH服务器(scp 本地路径 服务器路径)
scp -P <SSH服务器端口号> <本地电脑某个待上传的文件路径> <SSH服务器登录账号>@<SSH服务器主机名或IP>:<SSH服务器上的某个目录(用于存放本地电脑上传的文件)> # 例如 scp -P 22 /home/decisionmaker/examples/test_upload.tar.xz helper@m.xyz.com:/home/helper/examples # 如果上传的是目录而不是文件,scp命令需要加上-r选项把文件从SSH服务器下载到本地电脑(scp 服务器路径 本地路径)
scp -P <SSH服务器端口号> <SSH服务器登录账号>@<SSH服务器主机名或IP>:<SSH服务器上的某个待下载的文件路径> <本地电脑的某个目录(用于存放从SSH服务器下载的文件)> # 例如 scp -P 22 helper@m.xyz.com:/home/helper/examples/test_download.zip /home/decisionmaker/examples # 如果下载的是目录而不是文件,scp命令需要加上-r选项在SSH客户端执行scp命令 上传文件
在SSH客户端执行scp命令 下载文件
如何修改SSH服务的端口和禁用root登录
执行下面的两个步骤
# 第一步 sudo vi /etc/ssh/sshd_config # 禁用root登录: 把PermitRootLogin由yes改为no PermitRootLogin no # 修改端口: 把Port由22改为其他端口,如11927 Port 11927 # 第二步 重启sshd服务 sudo systemctl restart sshd.service安装、启动、停止、重启、开机自启、查看SSH服务
查看SSH服务是否已安装
# 方法1 decisionmaker@tdar-srv:~$ dpkg -l | cut -d " " -f3 | grep openssh openssh-client openssh-server openssh-sftp-server # 方法2 decisionmaker@tdar-srv:~$ apt list openssh-* --installed Listing... Done openssh-client/focal-updates,now 1:8.2p1-4ubuntu0.4 amd64 [installed] openssh-server/focal-updates,now 1:8.2p1-4ubuntu0.4 amd64 [installed] openssh-sftp-server/focal-updates,now 1:8.2p1-4ubuntu0.4 amd64 [installed,automatic]安装SSH服务
sudo apt update # 安装ssh服务端 sudo apt install openssh-server # 安装ssh客户端 sudo apt install openssh-client启动、停止、重启、开机自动启动SSH服务
# 激活sshd服务 开机自启(开机时自动启动) sudo systemctl enable sshd # 禁用sshd服务 开机自启 sudo systemctl disable sshd # 查看sshd服务 是否激活了开机自启 sudo systemctl is-enabled sshd # 启动sshd服务 sudo systemctl start sshd # 停止sshd服务 sudo systemctl stop sshd # 直接kill掉sshd服务,慎用这个命令,一般用systemctl stop停止服务 sudo systemctl kill sshd # 重启sshd服务 sudo systemctl restart sshd # 查看sshd服务的状态(是启动了,还是停止了) sudo systemctl status sshd查看SSH配置文件的位置
ssh服务端的配置文件通常位于: /etc/ssh/sshd_config和/etc/ssh/sshd_config.d。
ssh客户端的配置文件通常位于: /etc/ssh/ssh_config和/etc/ssh/ssh_config.d。
若是实在找不到配置文件,则根据关键词sshd_config或ssh_config查找:
root@tdar-srv:~# apt install mlocate # 找到sshd_config的位置 root@tdar-srv:~# locate sshd_config # 找到ssh_config的位置 root@tdar-srv:~# locate ssh_config我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!