文章目录
本文主要讲解Windows下如何利用ssh和scp访问linux服务器,linux与linux间免密访问类似。
1. SSH免密登录
1. Windows上操作
SSH安装
Windows10自带,没有的话安装Openssh
生成公私钥
PS C:\> ssh-keygen -t rsa
默认情况下连续回车就好,在~\.ssh
目录下生成id_rsa(私钥)和id_rsa.pub
(公钥)。
输出:
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\wq/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\wq/.ssh/id_rsa.
Your public key has been saved in C:\Users\wq/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:......# 安全考虑笔者省略
The key's randomart image is:
+---[RSA 3072]----+
......# 省略
+----[SHA256]-----+
ssh-keygen
用法:
ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
[-N new_passphrase] [-t dsa | ecdsa | ed25519 | rsa]
ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
[-P old_passphrase]
ssh-keygen -i [-f input_keyfile] [-m key_format]
ssh-keygen -e [-f input_keyfile] [-m key_format]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-lv] [-f known_hosts_file]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-g] [-f input_keyfile]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
ssh-keygen -f input_file -T output_file [-v] [-a rounds] [-J num_lines]
[-j start_line] [-K checkpt] [-W generator]
ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
[-n principals] [-O option] [-V validity_interval]
[-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A [-f prefix_path]
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file ...
ssh-keygen -Q -f krl_file file ...
ssh-keygen -Y check-novalidate -n namespace -s signature_file
ssh-keygen -Y sign -f key_file -n namespace file ...
ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
-n namespace -s signature_file [-r revocation_file]
常用参数:
-b
:指定密钥长度;
-e
:读取私钥或者公钥文件;
-C
:添加注释;
-f
:指定用来保存密钥的文件名;
-i
:读取未加密的ssh-v2
兼容的私钥/公钥文件,然后在标准输出设备上显示openssh
兼容的私钥/公钥;
-l
:显示公钥文件的指纹数据;
-N
:提供一个新密语;
-P
:提供(旧)密语;
-q
:静默模式;
-t
:指定要创建的密钥类型。
注:ssh-keygen -f
指定私钥保存路径后,需要按1.3.2多密钥配置来指定ssh的私钥读取。
公钥拷贝到linux服务器
scp
方式拷贝
PS C:\> scp id_rsa.pub user@ip:~/.ssh/
或者ftp
手动拷贝
2. Linux上操作(root用户为例)
1. 添加公钥
root@xxx $ cd ~/.ssh && touch authorized_keys //没有这个文件则创建
root@xxx $ cat id_rsa.pub >> authorized_keys //追加公钥,可以是多个
root@xxx $ chmod 600 authorized_keys //文件拥有者给读写权限,不可执行
root@xxx $ cd .. && chmod 700 .ssh //文件夹拥有者给读写执行权限
权限导致的相关问题:
2. 修改ssh配置
root@xxx $ vim /etc/ssh/sshd_config
vim下按 i,进入编辑模式
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes
按ESC推出编辑,:wq
保存退出,重启ssh服务端
root@xxx $ service sshd restart
3. Windows上测试
1. 单个密钥免密登录
PS C:\> ssh -p port root@ip
2. 多个密钥配置
windows上修改~/.ssh/config
Host name //根据自己情况修改name
HostName ip
Port 22 //如果是docker映射的端口需要改成映射出的端口号
User root
IdentityFile ~\\.ssh\\id_rsa
PreferredAuthentications publickey
简化登录:ssh ${name}
2. 免密传输
scp
免密配置如ssh一致。以下简要讲解scp
用法
- 远程服务器文件下载
PS C:\> scp -P 22 user@ip:~/test.tar.gz /home/test.tar.gz
-P
为端口参数,22 表示更改连接SSH的端口,如果没有更改默认的SSH端口可以不用添加该参数。
- 获取远程服务器上的目录
PS C:\> scp -r user@ip:~/testdir /home/testdir/
-r 参数表示递归复制(即复制该目录下面的文件和子目录);~/testdir/
表示远程服务器上当前用户下的目录,最后面的/home/testdir/
表示保存在本地上的路径。
- 将本地文件上传到服务器上
PS C:\> scp /home/test.tar.gz user@ip:~/upload.tar.gz
其余常用参数有
-4
:强制使用ipv4
-6
:强制使用ipv6
-v
:和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 、认证 、或是配置错误 .
-C
:使能压缩
ssh自带sftp
- sftp客户端连接
sftp -oPort=22 root@192.168.25.137 put /etc/hosts /tmp get /etc/hosts /home/omd
- 小结:
1.linux下使用命令: sftp -oPort=22 root@x.x.x.x
2.put将客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录