Closed cyshallchan closed 1 year ago
有报什么错吗?
有报什么错吗?
报错也是和这帖子里是一样的报错:
2023/01/18 06:24:29 agent 11: agent: client error: write unix ->/Users/bene/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock: write: broken pipe
error fetching identities: agent refused operation
我看给出的解法是:https://help.okta.com/asa/en-us/Content/Topics/Adv_Server_Access/docs/setup/ssh.htm
1、你执行 sft ssh-config
会输出什么( 可以把一些敏感的打码了,如 IP 等 )?
2、你的 ~/.ssh/config
里是怎么配置的?
3、你怎么样登录的,是 sft tssh web0.example.com
还是怎么样?主要把所有参数列出来。
我看给出的解法是:https://help.okta.com/asa/en-us/Content/Topics/Adv_Server_Access/docs/setup/ssh.htm
1、你执行
sft ssh-config
会输出什么( 可以把一些敏感的打码了,如 IP 等 )?2、你的
~/.ssh/config
里是怎么配置的?3、你怎么样登录的,是
sft tssh web0.example.com
还是怎么样?主要把所有参数列出来。
这个解决办法我看过,需要另外在装个软件,我是比较排斥这种的,所以就没有去尝试;
下面是我的config配置:
Host *
IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
ServerAliveInterval 1800
TCPKeepAlive no
ForwardAgent yes
ServerAliveInterval 30
ServerAliveCountMax 5
Host desktop-debian
Hostname 192.168.6.9
User root
Host openwrt
Hostname xxx.xxx.xxx.xxx
User root
Host openwrt-frp
Hostname xxx.xxx.com
User root
Port 20222
Host nuc
Hostname xxx.xxx.xxx.xxx
User root
Host nas
Hostname xxx.xxx.xxx.xxx
User root
我平常使用的是自己设置alias的,alias tssh='ssh'
,然后登陆某台机器的时候直接ssh 目标主机Host
。
是 alias ssh="tssh"
吧?
现在 tssh
还不支持 IdentityAgent
配置,等我有空了加一下。
在支持 IdentityAgent
之前,你试试先执行 export SSH_AUTH_SOCK="/Users/xxx/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
( 注意 xxx
要换成你的用户名,完整的路径要存在 ),然后再用 tssh
登录,看看效果?
是
alias ssh="tssh"
吧?现在
tssh
还不支持IdentityAgent
配置,等我有空了加一下。在支持
IdentityAgent
之前,你试试先执行export SSH_AUTH_SOCK="/Users/xxx/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
( 注意xxx
要换成你的用户名,完整的路径要存在 ),然后再用tssh
登录,看看效果?
SSH_AUTH_SOCK
这个变量我是设置了的,其对应路径下也是有socket文件的,所以应该不是这个问题。
和 IdentityAgent 是同一个路径?有没有 ~/
的?然后用 openssh 时没有问题?
加个 --debug 参数登录,看看有哪些 agent 相关的输出?
和 IdentityAgent 是同一个路径?有没有
~/
的?然后用 openssh 时没有问题?
可能我之前没说明白,我在描述下使用场景和使用问题:
~/.ssh/config/
目录下没有任何ssh公钥以及私钥;然后在1password开启了ssh-agent功能,当我在当前机器使用ssh连接远程主机的的时候会将请求转发给1password,接着从1passsword获取私钥来验证远程服务器的我的公钥的从而实现登陆;在使用tssh从当前主机登陆远程主机没有问题,执行ssh-add -l
也都能查看到1password中存储的private key,但是过一段时间之后这个ssh-agent-forward就会出现问题,这时候执行ssh-add -l
就会报错:
2023/01/18 06:24:29 agent 11: agent: client error: write unix ->/Users/bene/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock: write: broken pipe
error fetching identities: agent refused operation
之后需要使用ssh协议的地方都会有问题,因为和1password这条路不通了嘛。
而使用openssh则没有任何问题。
一段时间,大约是要多久?我看看我这里能不能复现。
一段时间,大约是要多久?我看看我这里能不能复现。
刚测试了下,大概一分钟的样子
我没有安装 1password,用的 mac 自带的 ssh-agent ,刚试了下,转发到远程服务器之后,至少十几分钟都没问题。
你在登录前、登录后( 没问题时,有问题时 ),分别在本地 mac 中( 另一个终端 )执行 ls -i $SSH_AUTH_SOCK
,看看输出的第一个数字会不会变化?
我没有安装 1password,用的 mac 自带的 ssh-agent ,刚试了下,转发到远程服务器之后,至少十几分钟都没问题。
你在登录前、登录后( 没问题时,有问题时 ),分别在本地 mac 中( 另一个终端 )执行
ls -i $SSH_AUTH_SOCK
,看看输出的第一个数字会不会变化?
远程机器:
❯ ls -i $SSH_AUTH_SOCK
60817471 /tmp/ssh-XXXX3PSMSF/agent.550614
本地机器:
❯ ls -i $SSH_AUTH_SOCK
124395469 '/Users/xxxx/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock'
正常情况和出问题时都是一样的。
也就是,本地机器,一直都是 124395469
,没变过?
也就是,本地机器,一直都是
124395469
,没变过?
是的,本地机器的不会变,远程的机器每一次新的ssh会话都会变。
用 openssh 时,是不是会弹出类似下面的对话框?那在用 tssh 时,会不会弹出来?是从来不弹出,还是没问题时会弹出?
用 openssh 时,是不是会弹出类似下面的对话框?那在用 tssh 时,会不会弹出来?是从来不弹出,还是没问题时会弹出?
都会弹的,不然根本无法使用其中存储的私钥。
有问题时,也会弹出来?是弹出来之后,在你没确认之前就报错,还是在你确认之后才报错?
有问题时,也会弹出来?是弹出来之后,在你没确认之前就报错,还是在你确认之后才报错?
这个弹窗不是每次弹阿,会根据设置选项在一定条件默认批准。
你可以把 https://github.com/trzsz/trzsz-ssh/blob/a71ac3a3e4cb4b5452a46b8b53b3137c3d7c580b/tssh/login.go#L848C18-L848C32 这一行 ForwardToAgent
改成 ForwardToRemote 看看效果。
如果不知怎么改,可以加 README 最下面的 QQ 群。
你可以把 https://github.com/trzsz/trzsz-ssh/blob/a71ac3a3e4cb4b5452a46b8b53b3137c3d7c580b/tssh/login.go#L848C18-L848C32 这一行
ForwardToAgent
改成 ForwardToRemote 看看效果。如果不知怎么改,可以加 README 最下面的 QQ 群。
不行的,这俩函数的入场都不一样。
第二个参数直接写你那个路径 "/Users/xxx/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
第二个参数直接写你那个路径
"/Users/xxx/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
测试下来没问题了,感谢感谢~
看来 1password 那个 unix socket 连上之后,会超时,不能一直用。 但是,ForwardToRemote 不兼容 Windows ,我抽空研究下怎么搞。
看来 1password 那个 unix socket 连上之后,会超时,不能一直用。 但是,ForwardToRemote 不兼容 Windows ,我抽空研究下怎么搞。
好的,那我先关闭issue。
具体详情可以看下这个帖子,使用原版ssh就没有这个问题。