mac配置ssh免密登陆

2023年 8月 29日 22.1k 0

生成密钥

cd ~/.ssh
ssh-keygen -t rsa

配置远程主机

vim ~/.ssh/config
Host pdev
  User user00
  HostName 192.168.13.220
  Port 8888
  PubkeyAuthentication yes
  IdentityFile /Users/xxxx/.ssh/id_rsa

拷贝公钥到远程主机上

查看本地公钥
cat id_rsa.pub

复制到远程linux机器的~/.ssh/authorized_keys文件里面

修改目录和文件的权限:
.ssh目录的权限必须是700
.ssh/authorized_keys文件权限必须是600

重启ssh服务
service sshd restart

如果还是提示输入密码  关闭 selinux

临时关闭
setenforce 0 

永久关闭
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled

进行免密登陆

可以通过~/.ssh/config中配置的Host名字直接免密登陆
ssh pdev

代理ssh端口

大部分情况下,开发机都会对端口进行访问限制,只允许访问8000-9000端口,这时候,可以自己在8000-9000开一个tcp代理,代理到22端口,方便本地机器进行免密登陆。

package main

import (
"fmt"
"io"
"net"
)

func main() {
server()
}

func server() {
lis, err := net.Listen("tcp", "192.168.13.220:8888")
if err != nil {
fmt.Println(err)
return
}
defer lis.Close()
for {
conn, err := lis.Accept()
if err != nil {
fmt.Printf("建立连接错误:%+v\n", err)
continue
}
fmt.Println(conn.RemoteAddr(), conn.LocalAddr())
go handle(conn)
}
}

func handle(sconn net.Conn) {
defer sconn.Close()
dconn, err := net.Dial("tcp", "192.168.13.220:22")
if err != nil {
fmt.Printf("连接失败:\n")
return
}
ExitChan := make(chan bool, 1)
go func(sconn net.Conn, dconn net.Conn, Exit chan bool) {
//会一直读到eof或者其他err,网络fd会一直可读,所以,只要客户端不退出,这里会一直执行
_, err := io.Copy(dconn, sconn)
fmt.Printf("往发送数据失败:%+v\n", err)
ExitChan

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论