Installing Cygwin unattended on W2K8

Unattended Install

Unattended Cygwin+Openssh+Some Utils Installation for Windows


1 Download setup.exe from the cygwin web site.

2 Run the installer conventionally, choosing the options for downloading to a local directory without installing anything. Make sure you have the following packege choose:

From Admin, select all packages.
From Archive, select unzip and zip packages.
From Base, leave the default, select all packages.
From Doc, leave the default, man and 'cygwin doc' packages.
From Editors, select vim package.
From Net, select openssh (openssl will get checked automatically), rsync and tcp_wrappers packages.

set to 'Install' in the choose packages page.

3 Run the sed script over the downloaded setup.ini file: (Note: Need a Cygwin installed machine to performe this)
cp setup.ini setup.ini-backup 
sed "s/[cC]ategory:.*/Category: Base/" < setup.ini > setup.temp
cp setup.temp setup.ini

4 This now leaves you with a 'canned' version of Cygwin that will install from the command line as follows:

setup.exe -q --local-install --root c:\where\you\want\to\put\cygwin -l c:\path\to\installer\directory

Note: that the paths you give to setup.exe need to be Windows paths, not Cygwin paths.

"c:\where\you\want\to\put\cygwin" means the cygwin will be installed in to this folder eg. c:\ssh

"c:\path\to\installer\directory" means the package downloaded from Internet. The original directory name is something like "http%3a%2f%2fmirror.csclub.uwaterloo.ca%2fcygwin%2f" rename it and point the install batch file to the realname. eg. c:\ssh\package\release.

4. Right click My Computer, Properties, Advanced, Environment Variables
Click the "New" button to add a new entry to System variables:
variable name is CYGWIN
variable value is ntsec tty

or use this commad: setx CYGWIN "ntsec tty" /m

5. Right click My Computer, Properties, Advanced, Environment Variables
Select the Path variable and click the "Edit" button:
append ;c:\cygwin\bin to the end of the existing variable string.

or use this command: SET PATH = %PATH%;C:\ssh\bin

How to uninstall/install cygwin under Windows 2008

6. Uninstall Steps

(From previous attempted failed installations)

In Administrator shell

1. net stop sshd

2. cygrunsrv -R sshd

3. net user

Delete any user listed like sshd or sshd_server. 

The following syntax is to be used:

net user sshd /DELETE

4. rm -R /etc/ssh*

5. mkpasswd -cl > /etc/passwd

6. mkgroup --local > /etc/group

In User shell

1. cd ~

2. rm -R .ssh

***********************************************

7. Installation Steps

In Administrator shell

1. ssh-host-config -y

2. net start sshd

In User shell

1. ssh-user-config (Answer questions as appropriate to your situation)

2. Test connection:

ssh -vvv localhost

Then go to Control Panel ... Windows Firewall, open inbound TCP port 22.

8. Troubleshooting…

1 SSH-Issue: /bin/bash: Permission denied

Going to cygwin icon from desktop and add

mkpasswd -l > /etc/passwd

mkgroup -l > /etc/group

Then add these 6 commands as work around:

chmod +r /etc/passwd
chmod u+w /etc/passwd
chmod +r /etc/group
chmod u+w /etc/group
chmod 755 /var
chmod 664 /var/log/sshd.log

Then run this command

editrights -a SeTcbPrivilege -u ssh_service
editrights -a SeAssignPrimaryTokenPrivilege -u ssh_service
editrights -a SeCreateTokenPrivilege -u ssh_service
editrights -a SeDenyInteractiveLogonRight -u ssh_service
editrights -a SeDenyNetworkLogonRight -u ssh_service
editrights -a SeDenyRemoteInteractiveLogonRight -u ssh_service
editrights -a SeIncreaseQuotaPrivilege -u ssh_service
editrights -a SeServiceLogonRight -u ssh_service

finally,

net stop sshd

net start sshd

2 SSH-Issue: Server refused to allocate pty

Check task manager to see how many bash.exe were running, then issue the following command to kill them all

Taskkill /F /IM bash.exe /T

Taskkill.exe is located in C:\WINDOWS\system32