我无法使用Visual Studio 2015中的Xamarin Mac代理连接到Mac

时间:2016-04-12 15:20:56

标签: macos debugging visual-studio-2015 xamarin.ios xamarin.forms

我继续与Xamarin一起冒险。

我正在开发一个带有便携式类库(PCL)的Xamarin Forms应用程序。

我已经通过Android编译和调试了我的应用程序,但现在,我有兴趣在iOS中运行该应用程序以在此平台上进行测试。

我的电脑和Mac之间的连接存在问题。

我有一台装有Xamarin工具的Visual Studio Community 2015的PC(Windows 8.1)。

在我的Mac Mini中,我安装了OS X(v10.11.3),XCode(v7.2)和Xamarin Studio。我已使用我的Xamarin帐户登录。

在这两台机器上,我有相同的Xamarin版本。

我已关注Xamarin walkthrough

在Visual Studio上,我打开Xamarin Mac Agent。它找到我的Mac Mini。然后它会问我Mac凭证(用户名和密码)。

enter image description here

此时登录正常工作。

enter image description here

然后,在解决方案中,我将iOS项目设置为启动项目。我清理解决方案,我再次构建并启动编译/调试过程(F5)。

此时,输出将检索一条消息:

  

1>连接到Mac服务器Macs-Mac-mini.local ...

     

1> C:\ Program Files(x86)\ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Windows.After.targets(54,5):警告:无法使用现有的ssh密钥对用户进行身份验证

     

1> C:\ Program Files(x86)\ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Windows.After.targets(54,5):错误:无法连接到地址=' Macs-Mac -mini.local'用户=' macmini

如果我能够连接到Mac,我已经使用Putty(SSH客户端)检查我的用户/密码,并且我已经取得了成功。

进入/Users/macmini2/.ssh/authorized_keys文件(Mac机器)每次我使用Xamarin Mac Agent时,Visual Studio都会添加一个新的密钥条目(它会重复添加相同的内容)。

我看到问题可能与ssh键有关。 为什么我有这个问题?我做错了什么?

我测试的一件事就是直接在Mac上用Xamarin Studio打开Xamarin项目,构建它并运行模拟器。它有效。

我见过其他类似的question,但我认为它没有同样的问题。

修改

尝试编译/调试时有关错误的更多具体信息:

Could not authenticate the user using the existing ssh keys
Xamarin.Messaging.VisualStudio.MessagingAuthenticationException: Could not authenticate the user using the existing ssh keys ---> Renci.SshNet.Common.SshAuthenticationException: Permission denied (publickey).
   en Renci.SshNet.ClientAuthentication.Authenticate(IConnectionInfoInternal connectionInfo, ISession session)
   en Renci.SshNet.ConnectionInfo.Authenticate(ISession session)
   en Renci.SshNet.Session.Connect()
   en Renci.SshNet.BaseClient.Connect()
   en Xamarin.Messaging.VisualStudio.MessagingService.<ConnectAsync>d__70.MoveNext()
   --- Fin del seguimiento de la pila de la excepción interna ---

编辑2:

我已经修改了troubleshooting Xamarin page,特别是它说&#34;无法使用SSH密钥进行身份验证。请先尝试使用凭据登录&#34;。

我跑了:

chmod og-w "$HOME"
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
cd Desktop
cat sshd.log

该文件的内容是:

Apr 18 09:23:28 Macs-Mac-mini sshd[769]: Authentication refused: bad ownership or modes for directory /Users/macmini2/.ssh
Apr 18 09:25:27 Macs-Mac-mini com.apple.xpc.launchd[1] (com.openssh.sshd.EE9A94ED-????-....-????-77254934B300[769]): Service exited with abnormal code: 1
Apr 18 09:59:39 Macs-Mac-mini sshd[1036]: Accepted keyboard-interactive/pam for macmini2 from 192.168.54.14 port 60413 ssh2
Apr 18 09:59:39 Macs-Mac-mini sshd: macmini2 [priv][1036]: USER_PROCESS: 1040 ttys000

但现在我不知道自己要做些什么来解决它。

15 个答案:

答案 0 :(得分:25)

您必须尝试删除

中的所有内容
%localappdata%\Xamarin\MonoTouch

它帮助了我,今天我遇到了同样(或类似)的问题。

答案 1 :(得分:14)

我找到了解决我问题的方法。我已完成以下步骤:

  1. 在我的Windows中:我已从“%localappdata%\ Xamarin \ MonoTouch”中删除了内容。
  2. 在Mac终端中:删除authorized_keys Mac文件(在我的情况下为“rm /Users/macmini2/.ssh/authorized_keys”)
  3. 在Mac终端中: chmod g-w / Users / macmini2 /
  4. 在Mac终端中: chmod 700 /Users/macmini2/.ssh /
  5. 在Mac终端中:创建一个空文件:/Users/macmini2/.ssh/authorized_keys(例如,使用vim)
  6. 在Mac终端中: chmod 600 /Users/macmini2/.ssh/authorized_keys
  7. 在Visual Studio上:使用Xamarin Mac Agent登录
  8. 在Visual Studio上:使用[Debug] - [iPhoneSimulator] - [iPhone 5 iOS 8.1]
  9. 运行应用程序
  10. 最后,模拟器在Mac电脑上运行。
  11. This link帮助了我。

答案 2 :(得分:6)

Xamarin有一个疑难解答页面,主要关注SSH问题:

Connection Troubleshooting

特别是这两个:

日志文件位置

Mac – ~/Library/Logs/Xamarin-[MAJOR.MINOR]
Windows – %LOCALAPPDATA%\Xamarin\Logs

可以通过浏览帮助&gt;找到日志文件。 Xamarin&gt; Zip日志在Visual Studio中。

“无法使用SSH密钥进行身份验证。请先尝试使用凭据登录”

已知原因:

SSH security restriction – This message most often means that one of the files or directories in the fully qualified path of $HOME/.ssh/authorized_keys on the Mac has write permissions enabled for other or group members. Common fix: Run chmod og-w "$HOME" in a Terminal command prompt on the Mac. For details about which particular file or directory is causing the problem, run grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log" in Terminal, and then open the sshd.log file from your Desktop and look for "Authentication refused: bad ownership or modes".

此外还有这一部分,它与您看到的错误没有直接匹配,但在SSH配置和诊断方面有一些细节:

“无法连接到MacBuildHost.local。请重试。”

报告原因:

Bug – A few users have seen this error message when attempting to log in to the build host using an Active Directory domain user account.

Bug – Some users have seen this error when attempting to connect to the build host by double-clicking the name of the Mac in the connection dialog. Possible workaround: Manually add the Mac using the IP address.

Bug #35971 – Some users have run across this error when using a wireless network connection between the Mac build host and Windows. Possible workaround: Move both computers to a wired network connection.

Bug #36642 – On Xamarin 4.0, this message will appear anytime the $HOME/.bashrc file on the Mac contains an error. (Starting with Xamarin 4.1, errors in the .bashrc file will no longer affect the connection process.) Workaround: Move the .bashrc file to a backup location (or delete it if you know you don't need it).

Limitation – This error can appear if the Mac build host is connected to a router that has no access to the internet (or if the Mac is using a DNS server that times out when asked for the reverse-DNS lookup of the Windows computer). Visual Studio will take roughly 30 seconds to retrieve the SSH fingerprint and eventually fail to connect.

Possible workaround: Add "UseDNS no" to the sshd_config file. Be sure to read about this SSH setting before changing it. See for example http://unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.

The following steps describe one way to change the setting. You will need to be logged in to an administrator account on the Mac to complete the steps.

    Confirm the location of the sshd_config file by running ls /etc/ssh/sshd_config and ls /etc/sshd_config in a Terminal command prompt. For all of the remaining steps, be sure to use the location that does not return "No such file or directory".

    Run cp /etc/ssh/sshd_config "$HOME/Desktop/" in Terminal to copy the file to your desktop.

    Open the file from your Desktop in a text editor. For example you can run open -a TextEdit "$HOME/Desktop/sshd_config" in Terminal.

    Add the following line at the bottom of the file:

    UseDNS no

    Remove any lines that say UseDNS yes to make sure the new setting takes effect.

    Save the file.

    Run sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config in Terminal to copy the edited file back into place. Enter your password if prompted.

    Disable and re-enable Remote Login under System Preferences > Sharing > Remote Login to restart the SSH server.

答案 3 :(得分:5)

我刚刚解决了这个问题! 这是无稽之谈。

连接Visual Studio Xamarin项目并在获得时在Mac上模拟:

  

无法连接到computername.local,请稍后再试。

下一步需要做什么:

  1. 按照xamarin社区关于mac连接的解决方案 在这一点之后,如果一切正常,你将连接,但如果没有..
  2. 在MAC上安装XAMARIN STUDIO。安装完成后启动XAMARIN studio,创建自己的应用程序并使用模拟器运行
  3. 关闭应用并尝试从Windows计算机再次连接。 此时,您将进行同步,这就是全部。
  4. 问题解决了!我希望这对某些人有用。

答案 4 :(得分:4)

对我帮助下一个解决方案: 1)在Windows上打开Visual Studio: 工具=&gt;选项=&gt; Xamarin =&gt;其他,然后点击立即检查

2)在Mac上打开Xamarin Studio社区(https://www.xamarin.com/download) Xamarin工作室社区=&gt;检查更新...(并下载最后一个)

更新后一切正常。

答案 5 :(得分:2)

我尝试了一些这里提到的解决方案并没有成功。

然而(虽然不理想)如果我在管理员模式下运行Visual Studio,我可以成功连接。在找到更好的解决方案之前,可以解决一些问题。

答案 6 :(得分:1)

对于它的价值,我通过检查上述日志和Xamarin故障排除文档中的日志解决了这个问题。结果是iOS版本不匹配。一旦我更新了Mac版本就可以了。

enter image description here

答案 7 :(得分:1)

这不是完美的解决方案,但在我的案例中取得了成功

  

您的mac帐户不应包含任何特殊字符 - 这是与Windows连接的限制

company-mac1 ---错误

comapanymac1 ---正确

答案 8 :(得分:1)

在我的情况下,我在我的Mac上安装了单声道sdk它解决了问题 http://www.mono-project.com/download/#download-mac

答案 9 :(得分:1)

忽略Visual Studio向导显示的代理。有关Mac电脑名称VS的事情并不了解。

我做了&#39;添加Mac&#39;,使用了IP地址,然后连接了。这很烦人。

答案 10 :(得分:0)

您是否打开了远程登录,那是当前登录到本机的用户/登录?此外,您是否尝试过直接连接到IP地址而不是DNS名称?

我在客户的网络上(与我的网络不同),我的VS永远不会通过计算机名连接。我总是必须输入IP地址。另外,观看&#34; Xamarin&#34;在“输出”面板/窗口中查看是否提供了更多有用的信息。

答案 11 :(得分:0)

我最近遇到了这个问题(尽管在OSX主机上启用了共享并检查了防火墙),结果发现OSX Machine和Windows Machine都需要完全相同版本的Xamarin.iOS并重启。

更新两者,重启两者,为我解决了问题。

答案 12 :(得分:0)

我认为为我修复的是打开DT[ ,mget(names(DT)[c(1,2)])] ID Capacity 1: 1 483 2: 2 703 3: 3 924 4: 4 267 5: 5 588 --- 196: 46 761 197: 47 584 198: 48 402 199: 49 416 200: 50 130 然后运行git bash。在说ssh onto the mac boxY之后,它有用了。

答案 13 :(得分:0)

在Mac上更新Visual Studion,并且:
1)在Mac上删除-.ssh(rm *)中的所有文件
2)在Mac上删除文件夹.ssh
3)在Windows上,生成ssh密钥并传输到MAC-为此打开Windows PowerShell 并执行以下命令:
[生成密钥]
PS>ssh-keygen -t rsa -b 4096

[定义远程主机变量]
PS>$REMOTEHOST="name_of_mac_user@ip_mac_machine"

[将密钥发送到Mac机]
PS>scp "$env:USERPROFILE\.ssh\id_rsa.pub" "${REMOTEHOST}:~/tmp.pub"

[将密钥tmb.pub复制到authorized_keys文件并设置权限]
PS>ssh "$REMOTEHOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"

4)检查Mac .ssh文件夹中authorized_keys文件是否正确:
tail ./authorized_keys

5)检查授权密钥(-rw -------)的权限
ls -al ./authorized_keys

答案 14 :(得分:0)

在我的情况下,我无法连接到XCode,因为“ XCode”文件不在MacOS的“ Application”文件夹中。当“ XCode”应用程序移至“应用程序”文件夹时,我已经建立连接。