ssh-window上的免密登录

前言

通常通过ssh实现远程主机的通信。一般有很多开源和收费的软件,提供图形界面,非常方便。但是有时,对于项目中特定的几个操作,直接包装成脚本可能更加方便。这时就需要直接执行ssh命令了:ssh,scp,sftp。

使用idea开发,可以参考Tools->Start SSH Session...Tools->Deployment->Browse Remote Host

安装ssh

安装ssh的方法一般有:

  • 下载ssh安装包,解压安装
  • 首先安装包管理工具scoop,再安装ssh

免密登录

ssh免密登录,需要把本机器的公钥复制到远程机器上。

是否有秘钥

首先查看本机器是否已经生成了秘钥。

cd ~/.ssh
ls

如果目录下有:

  • id_rsa
  • id_rsa.pub

说明本机器已经生成了秘钥。

生成秘钥

如果没有秘钥,则需要生成秘钥了。使用ssh-keygen生成:

ssh-keygen

注意,秘钥不要设置密码,不然ssh登录时还要输入秘钥的密码。

复制公钥

可能是免密登录的场景比较多吧,于是有了ssh-copy-id工具。

ssh-copy-id user@host

执行命令,发现报错了:

ssh-copy-id: line 59: grep: command not found
ssh-copy-id: line 59: head: command not found

这是因为windows不支持这些命令的原因,所以导致ssh-copy-id无法成功运行。

window运行linux命令

为了能运行linux相关命令,需要在windows上安装linux环境。一般想到是的CygwinMinGW,但是随着微软拥抱开源的力度加大,推出了Windows Subsystem for Linux,可以直接在windows上运行linux,毕竟官方推荐的,兼容性方便肯定好些吧。

安装完成后,wls文件系统的所在的目录是:

C:\Users\Admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs

安装模块PowerSSH

Install-Module -Name PowerSSH

开启wsl

Set-ModulePowerSSH

下载wsl并安装

参考安装教程

查看ssh命令

Get-PowerSshCommand

运行ssh命令

安装好wsl之后,wls自带ssh相关命令,可以在powershell中直接运行。

wls中生成好秘钥后,执行ssh-copy-id命令,可以正常运行。

保存为ps1脚本

复制了公钥之后,就可以免密登录了。为了避免每次输入用户和主机名,可以考虑把命令封装成ps1脚本,并且可以考虑给不同的开发人员分配不同用户名的脚本。

ssh user@host

scp命令

wls中使用scp命令时,可能会报ssh: Could not resolve hostname c: Name or service not known的错误。

scp -r 'c:\Users\Admin\Desktop\website' 'root@127.0.0.1:/root/abc'

这是由于scp命令把盘符理解为域名,导致的错误。解决的方法是使用./相对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值